标签:linux
语法: grep [-cinvABC] ‘word‘ filename
-c :打印符合要求的行数
-i :忽略大小写
-n :在输出符合要求的行的同时连同行号一起输出
-v :打印不符合要求的行
-A :后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行
-B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行
-C :后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行
例题:
包含 ‘halt’ 的行以及这行下面的两行都打印出:
grep -A2 ‘halt‘ /etc/passwd
包含 ‘halt’ 的行以及这行上面的两行都打印出:
grep -B2 ‘halt‘ /etc/passwd
包含 ‘halt’ 的行以及这行上面和下面的各两行都打印出:
grep -C2 ‘halt‘ /etc/passwd
过滤出带有某个关键词的行并输出行号:
grep -n ‘root‘ /etc/passwd
过滤不带有某个关键词的行,并输出行号:
grep -nv ‘nologin‘ /etc/passwd
过滤出所有包含数字的行:
grep ‘[0-9]‘ /etc/inittab
过滤出所有不包含数字的行:
grep -v ‘[0-9]‘ /etc/inittab
把所有以 ‘#’ 开头的行去除:
grep -v ‘^#‘ /etc/inittab
去除所有空行和以 ‘#’ 开头的行:
grep -v ‘^#‘ /etc/crontab |grep -v ‘^$‘
如何打印出不以英文字母开头的行
grep ‘^[^a-zA-Z]‘ test.txt
grep ‘[^a-zA-Z]‘ test.txt
过滤任意一个字符与重复字符:
grep ‘r..o‘ /etc/passwd . 表示任意一个字符
grep ‘ooo*‘ /etc/passwd * 表示零个或多个前面的字符
grep ‘.*‘ /etc/passwd |wc -l ‘.*’ 表示零个或多个任意字符,空行也包含在内
指定要过滤字符出现的次数:
grep ‘o\{2\}‘ /etc/passwd
筛选一个或一个以上前面的字符:
egrep ‘o+‘ test.txt
筛选零个或一个前面的字符:
egrep ‘o?‘ test.txt
筛选字符串1或者字符串2:
egrep ‘aaa|111|ooo‘ test.txt
egrep中( )的应用:
egrep ‘r(oo)|(at)o‘ test.txt 用( )表示一个整体,例如(oo)+就表示1个 ‘oo’ 或者多个 ‘oo’
标签:linux
原文地址:http://1566689.blog.51cto.com/1556689/1674949