Welcome 微信登录

首页 / 操作系统 / Linux / 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.txt
grep -i "she" test.txt
grep -c "she" test.txt
grep -in "she" test.txt
grep -v "she" test.txt
grep -w "she" test.txt
grep -o "she" test.txt
grep -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基本正则表达式
字符含义实例
  转义字符 
 ^ 锚定行的开始 "^help"匹配以help开头的行
 $ 锚定行的结束 "help$"匹配以help结尾的行
 . 匹配任意一个非换行符的字符 "he.p"匹配help,heap等,但不能匹配hep
 * 前面的字符重复0到多次 "he*p"匹配hp,hep,heep等
 [list] 匹配字符集中的一个字符 "[hk]elp"匹配help,kelp
 [n1-n2] 匹配字符范围中的一个字符 "[a-z]elp"匹配aelp,belp,...,zelp
 [^list] 匹配字符集以外的一个字符 "[^a-d]elp"不匹配aelp,belp,celp,delp。可匹配eelp,help, elp等
 {n1,n2} 前面的字符重复n1-n2次 "h{1,3}elp"匹配help,hhelp,hhhelp
 < 锚定单词的开始 "<h"匹配以h开头的单词。匹配help,但不匹配while
 > 锚定单词的结尾 "p>"匹配以p结尾的单词。匹配help,但不匹配person
特别说明:^在PATTERN开始位置出现才表示锚定行的开始,其它位置出现只是作为^字符。
例如:
grep "^help" test.txt 表示匹配以help开头的行
grep "help^" test.txt 表示匹配包含字符串help^的行
同理,$在PATTERN末尾位置出现才表示锚定行的结束,其它位置出现只是作为$字符。
PATTERN为"^$"表示空行,因为只有行首和行尾{n1,n2}中n2可省略,表示前面字符重复n1至多次,重复次数不设上限扩展正则表达式
grep一般情况下支持基本正则表达式,可以通过参数-E支持扩展正则表达式,另外grep单独提供了一个扩展命令叫做egrep用来支持扩展正则表达式,这条命令和grep -E等价。扩展正则表达式
字符含义实例
 + 前面的字符重复1到多次 "he+p"匹配hep,heep,heeep等,但不匹配hp
 ? 匹配0或1次前面的字符 "he?p"匹配hp,hep
 | 或的方式匹配多个字串 "help|heap"匹配help,heap
 () 匹配整个括号内的字符串 "(help)+"匹配help,helphelp等,注意与"help+"的区别
grep使用简明及正则表达式  http://www.linuxidc.com/Linux/2013-08/88534.htmLinux下Shell编程——grep命令的基本运用 http://www.linuxidc.com/Linux/2013-06/85525.htmgrep 命令详解及相关事例 http://www.linuxidc.com/Linux/2014-07/104041.htmLinux基础命令之grep详解 http://www.linuxidc.com/Linux/2013-07/87919.htm设置grep高亮显示匹配项 http://www.linuxidc.com/Linux/2014-09/106871.htm本文永久更新链接地址