grep
过滤器,egrep可以理解为grep的升级版
1 格式:grep [-cinvABC] ‘word‘ filename
-c:统计符合要求的行数
例如 : grep -c ‘root‘ /etc/passwd
grep -c ‘‘ /etc/passwd
统计文件总行数
-i:忽略大小写
-n:行号输出grep -n ‘root‘ /etc/passwd
-v 打印不符合要求的行, 补集
-An 打印符合要求的行同时带上下面n行,n为数字
-Bn 打印符合要求的同时带上上面n行
-Cn 打印符合要求的同时上下都带上n行
附上-c ,-n ,-v的运行结果grep ‘root‘ -c /etc/passwd;grep ‘‘/etc/passwd -c
head /etc/passwd |grep ‘root‘ -n
head -3 /etc/passwd |grep ‘root‘ -nv
举例:
grep 结合正则表达式的例子:
2 过滤出所有带数字的行grep ‘[0-9]‘ test.txt -n
3 过滤出以#好开头的行grep ‘^#‘ test.txt -n
重新编辑test.txt.
4 过滤出非纯数字的行grep ‘[^0-9]‘ test.txt
符号^放进[]里面表示非的意思,放在[]外面表示以某个字符开头例如:
5 过滤出非数字开头的行grep ‘^[^0-9]‘ test.txt
7 对上命令取反过滤出以数字开头的行grep -v ‘^[^0-9]‘ test.txt
该命令相当于 grep ‘^[0-9]‘ test.txt
重新编辑test.txt
8 . 点 字符 匹配任意一个字符grep ‘r.t‘ test.txt
9 * 匹配之前的项0次或多次grep ‘r\*t‘ test.txt
10 .* 组合起来,就是匹配所有字符
以下列举的正则符号均不能直接用grep,需要加-E选项,或者给符号加转义字符,为了方便我们直接使用egrep
11 {n} 匹配之前的项n次,
{n,} 匹配之前的项n次及其以上
{n,m} 指定之前的项所需匹配的最小次数和最大次数egrep ‘r{2}t‘ test.txt
egrep ‘r{2,}t‘ test.txt
egrep ‘r{1,2}t‘ test.txt
12 + 匹配之前的项1次或多次,*是从0次开始,+是从1次开始egrep ‘r+t‘ test.txt
13 ? 匹配之前的项0次或1次egrep ‘r?t‘ test.txt
14 | 匹配|两边的任意一项egrep ‘root|rt’ test.txt
或者 egrep ‘r(t|o)‘ test.txt
以上()创建了一个用于匹配的字符串
原文地址:http://blog.51cto.com/12606610/2082834