grep正则表达式
经常使用参数:spa
-c: 打印符合要求的行数3d
-i :忽略大小写blog
-n:输出行和行号test
-v:打印不符合要求的行,即反选file
-A:后跟数字(有无空格均可以),例如-A2 表示打印筛选行及后2行grep
-B:后跟数字,例如-B2表示打印筛选行及前2行im
-C:后跟数字,例如-C2表示打印筛选行及先后各2行d3
-o:只打印符合要求的内容,而非整行db
示例:
text.txt内容:
abc
123
efg
456
hij789
012ABC
Hello World
grep -c abc text.txt
1
grep -i abc text.txt
grep -n abc text.txt
grep -ivn abc text.txt
grep -A 2 abc text.txt
正则表达式
[0-9] 匹配全部数字
[03] 匹配0或者3
[0-9a-zA-Z] 匹配全部数字大小写字母
grep [0-9] text.txt
grep [1] text.txt
grep [a-zA-Z] text.txt
[^字符]表示除[]以外的字符。注意:此时将去除彻底符合的行,混合内容不会去除
grep [^0-9] text.txt
经过反选,能够查看上次的结果grep -v [^0-9] text.txt
grep '[^r]oo' test.txt 打印不包含r,但包含oo的行
^表示行首,$表示行尾,空行用^$表示
grep '^[0-9]' text.txt 打印以数字开头的行
grep '[0-9]$' text.txt 打印以数字结尾的行
grep '^$' text.txt 打印空行
过滤任意一个字符与重复字符
. 表示任意一个字符 * 表示0或多个前面的字符 .*表示0或多个任意字符,空行也包含在内
grep 'r..t' file 把符合r和t之间有2个任意字符的行打印出来
grep 'ooo*' file oo,ooo,oooo....所有打印
指定要过滤字符出现的次数{n1,n2},其中n1小于n2,表示重复n1到n2次前面的字符,n2能够为空,表示大于等于n1次。这个命令结合-o使用,可以看到匹配结果
grep -o '1\{2\}' text.txt
grep -o '1\{3,5\}' text.txt