0 grep的全称:
Grep : g (globally) search for a re (regular expression ) and p (print ) the results.
1 首先不用正则表达式的grep例子:
搜索有the的行,并输出行号
$grep -n 'the' regular_express.txt
搜索没有the的行,并输出行号
$grep -nv 'the' regular_express.txt
2 正则表达式:
最重要的也是使用频率最高的就是特殊字符(在正则表达式中代表一定含义的字符)与限定符(用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配)
详细请参考:
https://www.runoob.com/regexp/regexp-syntax.html
3 例子:
搜索以小写字母开头的行: $ grep -n '^[a-z]' XXX.txt
搜索开头不是英文字母的行: $grep -n '^[^a-zA-Z]' XXX.txt
搜索空行: $ grep -n '^$' XXX.txt (就是开始了便结束了)
搜索非空行当然就是: $ grep -vn '^$' XXX.txt
搜索两个o以上的字符串: $ grep -n 'ooo*' XXX.txt
搜索包含两个o的字符串的行:$ grep -n 'o\{2\}' XXX.txt
搜索除 空白行和行首为 #的行:$ grep -v '^$' XXX.txt | grep -v '^#'
使用egrep,也就是grep -E,也就是支持扩展正则的grep版本:$ egrep -v '^$|^#' XXX.txt
4 几个扩展特殊符号:
+,于 . * 作用类似,表示 一个或多个重复字符。
?, 于 . * 作用类似,表示0个或一个字符。
|,表示或关系,比如 'gd|good|dog' 表示有gd,good或dog的串
(),将部分内容合成一个单元组。比如 要搜索 glad 或 good 可以这样 'g(la|oo)d'
ps:()的好处是可以对小组使用 + ? * 等。
比如要搜索A和C开头结尾,中间有至少一个(xyz) 的串,可以这样 : 'A(xyz)+C'