grep和正则表达式结合使用基础

 

grep 是命令行中非常常用的一种文本处理命令,如果其能跟强大的正则表达式结合使用,将可以更加高效的对特定文本进行抓取与处理。

grep本身是可以解释三种类型的正则表达式的 basic(基本类型, 直接使用grep命令), extend(扩展型, 使用egrep命令), perl(perl类型, 传入-P选项)。

grep几种常用选项

  • -n 显示匹配到字符串的行数
  • -w 表示匹配确定的单词如 grep -w 'vicky' 只会匹配vicky 而vickyy就不会匹配出来
  • -i 匹配时忽略大小写
  • -v 反向匹配,输出没有匹配到的字符串
  • -P 传入的变量为Perl类型的正则表达式,如grep -P '^(?:(?!git).)*$' LIST
  • -E 正则表达式匹配,跟egrep一致

正则表达式里面的常用符号解释

  • . 表示匹配任意字符
  • * 表示匹配任意字符串
  • ^ 用在开头表示,匹配开头的字符,用在括号里面[^a-z] 表示不匹配a-z中的任意一个字符
  • ? 表示非贪婪匹配,匹配到相应字符串后就跳出不继续匹配后面的了
  • [] 匹配括号中任意一个字符,如[A-Z] 匹配A-Z中的任意一个。
  • ( ) 将匹配分组, 如 (ab){1,3} 表示ab这个组合要连续出现1-3次。
  • { } 匹配长度 , 如/s{3} 匹配三个space空格。

命令行匹配时,注意使用单引号引用匹配内容,双引号会解释其中的变量$varible,这往往是我们不期望的。


本文原创,错误之处在所难免!盼指出!