grep使用


linux下通过grep来查找含有指定字符串的所有文件的方法。以查找Parameter这个字符串为例。

方法/步骤

1. grep用法

grep [options] PATTERN [FILE...]
grep [选项] 要查找的字符串 查找范围(查找路径)
常用组合为:grep -rinl “要查找的字符串” 查找范围,rinl表示如下:
	-r 是递归查找,查找所有文件包含子目录
	-i 忽略大小写
	-n 是显示行号
	-l 只列出匹配的文件名
	-I 忽略二进制文件

2. grep -r递归查找

1、不带-r查找范围不包括子目录,只是指定目录下的所有文件;   
2、带-r时查找范围包括子目录。
   
grep  -i "Parameter" /home/test/shell/*   
grep  -ri "Parameter" /home/test/shell/*  `*`: 表示当前目录所有文件,也可以是某个文件名 

-
-

3. grep -i忽略大小写

1、不带-i表示大小写敏感,表示要与查找字符串的大小写一致;
2、带-i表示忽略大小写,大写和小写都可以。

grep  -i "Parameter" /home/test/shell/*
grep  -ri "Parameter" /home/test/shell/*

-

4. grep -n显示行数

显示查找字符串在文件的行数位置。
grep  -rn "Parameter" /home/test/shell/* 

-

5. grep -l只显示匹配的文件名。

grep  -ri "Parameter" /home/test/shell/*
grep  -ril "Parameter" /home/test/shell/*    

-

grep 显示前后几行的信息

grep 后面带上-A -B -C 参数可以多显示几行内容

   grep -A 5 可以显示匹配内容以及后面的5行内容
   grep -B 5 可以显示匹配内容以及前面的5行内容
   grep -C 5 可以显示匹配内容以及前后面的5行内容

RE(正则表达式)

  \ 忽略正则表达式中特殊字符的原有含义 
  ^ 匹配正则表达式的开始行 
  $ 匹配正则表达式的结束行 
  \< 从匹配正则表达式的行开始 
  \> 到匹配正则表达式的行结束 
  [ ] 单个字符;如[A] 即A符合要求 
  [ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求 
  . 所有的单个字符 
  * 所有字符,长度可以为0  

举例

 # cat size.txt | grep [a-b] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求 
   b124230 
   b034325 
   a061048 
   b103303 
   a013386 

 # cat size.txt |  grep 'b'
   b124230 
   b034325 
   b103303 
   
 # cat size.txt | grep '[bB]' 
   b124230 
   b034325 
   b103303 
   B081016 
   B103303 
   BADc2345 
 
 # more size.txt | grep -i 'b1..*3' -i :忽略大小写  
   b124230 
   b103303 
   B103303 
 
 # more size.txt | grep -iv 'b1..*3' -v :查找不包含匹配项的行 
   b034325 
   a081016 
   m7187998 
   m7282064 
   a022021 
   a061048 
   m9324822 
   a013386 
   b044525 
   m8987131