1. grep命令参数选项
-? 同时显示匹配行上下?行,如grep -2 'pattern' filename,
-A ? 同时显示匹配行下?行grep -A 10 'pattern' filename
-B ? 同时显示匹配行上?行
-c 打印匹配次数
-E 扩展正则egrep
-f 两个文件相同行 如,grep -f file1 file2
-F fgrep
-h 不显示匹配行所在文件名
-H 同时显示行和文件名
-i 忽略大小写
-l 只显示匹配到的文件名
-n 显示行号
-o 只显示匹配的字符
-r 递归查询
-v 只显示不匹配的行
2. grep正则表达式元字符集(基本集)
^ 锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。^$一起用代表空行
. 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。
[] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
.. 标记匹配字符,如'love',love被标记为1。
\< 锚定单词的开始,如:'\
x\{m\}
重复字符x,m次,如:'a\{5\}'匹配包含5个a的行。
x\{m,\}
重复字符x,至少m次,如:'a\{5,\}'匹配至少有5个a的行。
x\{m,n\}
重复字符x,至少m次,不多于n次,如:'a\{5,10\}'匹配5-10个a的行
3. 用于egrep和 grep -E的元字符扩展集
+ 匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。
? 匹配零个或多个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。
a|b|c
匹配a或b或c。如:grep|sed匹配grep或sed
() 分组符号,如g(la|oo)d匹配glad或good
()+ 多个重复分组匹配,如A(xy)+B匹配A开头B结尾中间一个以上的xy如AxyB.AxyxyB.AxyxyxyB
x{m},x{m,},x{m,n}
作用同x\{m\},x\{m,\},x\{m,n\}
4. POSIX字符类
[:alnum:] 0-9, A-Z, a-z
[:alpha:] A-Z, a-z
[:digit:] 0-9
[:lower:] a-z
[:upper:] A-Z