grep: global search regular expression(RE) and print out the line

是一种文本搜索工具,可根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行。 有则显示, 无则不显示

1 grep [options]  “pattern” file...

       1)pattern为字符串参数或调用变量时最好将其用双引号括起来;

       2) pattern为模式匹配时应用单引号括起来。

2 常用参数

   -v: 取反,显示不能被模式所匹配到的行;

       -o: 只显示被模式匹配到的字串,而不显示整行;

       -i: 不区分大小写;

       -E: 支持扩展正则表达式,相当于egrep;

       -A:参数后跟数字#,显示被匹配到的行和后面#行;

       -B: 参数后跟数字#,显示被匹配到的行和前面#行;

       -C: 参数后面跟数字#,显示被匹配到的行和前后各#行。


 -v    找出默认shell为非bash的用户信息。

grep和egrep的基础知识 _正则表达式

   -i  找出用户名为“myqq”的用户信息 用户名不区分大小写。

grep和egrep的基础知识 _正则表达式_02

   -E 显示ifconfig命令结果的1-255间的整数。

grep和egrep的基础知识 _正则表达式_03

-A 找出用户user49后面三个用户的信息。

grep和egrep的基础知识 _正则表达式_04



egrep也是文本一种文本搜索工具, 相当与 grep -E。


grep和egrep命令参数不多,复杂在正则表达式。


基本正则表达式  grep

   字符匹配

      .:匹配单个字符;

     []: 匹配指定范围内任意单个字符;

         [0-9],[[:digit:]]  匹配一个数字;

         [a-z],[[:lower:]]匹配一个小写字母;

         [A-Z].[[:upper:]]匹配一个大写字母;

         [[:alpha:]]匹配一个字母(大小写);

         [[:alnum:]]匹配一个数字或一个字母;

         [[:space:]]匹配空白字符;

         [[:punct:]]匹配标点符号;

     [^]:指定范围外的任意当字符。

  次数匹配 匹配对象为前面的字符;

        * : 匹配前面字符任意次;

       \?  : 0次或一次;

       \{0,n\}:至多n次   ;

       \{n\} : n次;

       \{m,n\} :m到n次;

       \{n,\}: 至少n次。

  位置锚定

       ^:锚定行首;

       $:锚定行尾;

       \<或\b:锚定词首;

       \>或\b锚定词尾;

  分组 \(\)  

         如 :\(ab\)*x 匹配x前面任意个ab组合 :x、abx、ababx……;

  引用 \1 引用前面第一个左括号到与之对应的右括号中所匹配到的内容;

         如: \(a.b\)x\1 :aabxaab、a1bxa1b。


扩展正则表达式  egrep   grep -E

   字符匹配和位置锚定与基本正则表达式相同;

   次数匹配

      *:匹配其前面的字符任意次;

      ? : 匹配其前面的字符01次;

      +: 匹配其前面的字符至少1

     {m}: 匹配其前面的字符m次;

     {m,n}: 至少m次,至多n次 作用与基本表达式中\{m,n\}相同;

     {m,}: 至少m次;

     {0,n}:至多n次。

  分组()和|

       如 l(ik|ov)er 匹配liker或lover。