1. grep 'root' /etc/passwd >/dev/null 2>&1 
  2.  
  3. if [ $? -eq 0 ]  
  4.  
  5. then 
  6.  
  7. ..... 

你还在用这样的判断方式吗?,那你是没有好好看grep的帮助文档

  1. -q, --quiet, --silent 
  2.  
  3.               Quiet;  do  not  write  anything  to  standard   output.    Exit 
  4.  
  5.               immediately  with  zero status if any match is found, even if an 
  6.  
  7.               error was detected.  Also see the -s  or  --no-messages  option. 
  8.  
  9.               (-q is specified by POSIX.) 
其实一个-q 参数就可以静默的输入。以后记得用这个啦

 

  1. grep -q 'root' /etc/passwd 
  2.  
  3. if [ $? -eq 0 ] 
  4.  
  5. then 
  6.  
  7. .....   
还有一个文件就是你还在sed或者其他方式来查找指定的字符所在行的上下N行吗?
那你又out了,看man手册
 
  1. -A NUM, --after-context=NUM 
  2.              Print  NUM  lines  of  trailing  context  after  matching lines. 
  3.              Places  a  line  containing  a  group  separator  (--)   between 
  4.              contiguous  groups  of  matches.  With the -o or --only-matching 
  5.              option, this has no effect and a warning is given. 
  6.  
  7.       -B NUM, --before-context=NUM 
  8.              Print NUM  lines  of  leading  context  before  matching  lines. 
  9.              Places   a  line  containing  a  group  separator  (--)  between 
  10.              contiguous groups of matches.  With the  -o  or  --only-matching 
  11.              option, this has no effect and a warning is given. 
  12.  
  13.       -C NUM, -NUM, --context=NUM 
  14.              Print  NUM  lines of output context.  Places a line containing a 
  15.              group separator (--) between contiguous groups of matches.  With 
  16.              the  -o  or  --only-matching  option,  this  has no effect and a 
  17.              warning is given.  

例子:

  1. [root@shanker ~]# seq 10 |grep 5 -A3 
  2. [root@shanker ~]# seq 10|grep 5 -B3 
  3. [root@shanker ~]# seq 10|grep 5 -C3 

很容易理解吧