必会linux grep总结

一、grep简述

grep命令是linux中强大的文本搜索工具,那么grep取名是怎么来的呢?

grep :  g (globally) search for a  re (regular expression) and  p (print ) the results

从上面的英文解释中可以看出,grep命令使用正则表达式搜索文本,并把匹配的行打印出来

二、grep使用格式

grep [OPTION]... PATTERN [FILE]... 

三、OPTION

-i:匹配时不区分大小写进行匹配。

-w:匹配时只匹配整个单词,而不是字符串的一部分(如PATTERN='she'时匹配单词she,而不匹配shell)

-h:输出时每行行首不显示文件名。

-H:输出时每行行首显示文件名。

-n:输出时每行显示行号。

-c:输出时只显示每个文件匹配行计数。

-L:输出时只显示不包含匹配项的文件名。

-l:输出时只显示包含匹配项的文件名。

-o:输出时每行只显示匹配项内容

-s:忽略错误信息。

-v:逆向匹配,选择不匹配的行。

-A:After的意思,显示匹配项后n行的数据

-B:before的意思,显示匹配项前n行的数据

-C:显示匹配字符串前后各n行的数据

--color:以特定颜色高亮显示匹配项内容

--color选项是个非常好的选项,可以让你清楚匹配上哪些字符。

最好在自己的.bashrc文件中加入:

alias grep='grep --color=auto'

再以source .bashrc来立即生效即可这样在每次grep搜索之后,自动高亮匹配效果了。

grep 'she' test.txtgrep -i 'she' test.txtgrep -c 'she' test.txtgrep -in 'she' test.txtgrep -v 'she' test.txtgrep -w 'she' test.txtgrep -o 'she' test.txtgrep -C 2 'she' test.txt

着重说下-o参数

假如grep 'she' test.txt输出为

she is beautiful 
I like she 

则grep -o 'she' test.txt输出为

she 
she

意思就是只显示匹配项部分,行中其它部分不显示

另说明下,PATTERN是正则表达式,为了避免shell的元字符对正则表达式的影响,请用单引号('')括起来,不要用双引号括起来("")或者不括起来。

四、PATTERN

特别说明:^在PATTERN开始位置出现才表示锚定行的开始,其它位置出现只是作为^字符。 

例如: 

grep '^help' test.txt 表示匹配以help开头的行 

grep 'help^' test.txt 表示匹配包含字符串help^的行 

同理,$在PATTERN末尾位置出现才表示锚定行的结束,其它位置出现只是作为$字符。 

PATTERN为'^$'表示空行,因为只有行首和行尾

\{n1,n2\}中n2可省略,表示前面字符重复n1至多次,重复次数不设上限

这条命令和grep -E等价。 

the end

评论(0)