简介
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
常用参数
grep :
-c 表示打印符合要求的行数
-i 表示忽略大小写
-n 表示输出符合要求的行及其行号
-v 表示打印不符合要求的行
-A 后面跟一个数字(有无空格都可以)例如 “-A2” 表示打印符合要求的行以及下面的两行
-B 后面跟一个数字 例如“-B2” 表示打印符合=要求的行以及上面的两行
-C 后面跟一个数字 例如“-C2” 表示打印符合要求的行以及上下各两行
-r 是递归查找
实例
grep -n ‘root’ /etc /passwd 过滤带有某个关键词的行并输出行号
grep -nv ‘root’ /etc/passwd 过滤不带有某个关键词的行并输出行号
grep ‘[0-9]’ /etc/passwd 过滤所有包含数字的行
grep -v ‘[0-9]’ /etc/passwd 过滤所有不包含数字的行
grep -v ‘^#’ 删除所有已“#”开头的行
grep -v ‘^#’/etc/crontab |grep -v ‘^$’ 删除所有的空行和以’#’开头的行
在正则表达式中“^”表示行的开始,“$”表示行的结尾,空行用“^$”表示
“1”表示除[]内的字符之外的字符
过滤任意一个字符和重复的字符:grep ‘r..o’ /etc/passwd
“.“表示任意一个字符 “r..o”表示把r与o之间有两个任意字符的行过滤出来。
“”表示零个或多个前面的的字符, “ooo” 表示 oo ooo ooo或者更多的o.
grep ‘r..o’ /etc/passwd
“.*” 表示零个或者多个任意字符,空行也包含在内。
grep ‘.*’ /etc/passwd |wc -l
指定要过滤的字符的出现次数
grep ‘0\{2\}’ /etc/passwd
{}其内部为数字,表示前面的字符要重复出现的次数,需要强调的是,{}左右都需要加上脱义字符“\”。另外“{}”还可以表示一个范围,具体格式为“{n1,n2}”
筛选 一个或者多个前面的字符
egrep ‘o+’ test.txt
egrep ‘oo+’ test.txt
egrep ‘ooo+’ text.txt
筛选零个或者一个前面的字符
egrep ‘o?’ test.txt
‘oo?’
‘ooo?’
筛选字符串1或者字符串2
egrep ‘oooo?’ test.txt
egrep 中()的应用
egrep ‘r(oo)|(at)o’ test.txt
用()表示一个整体,例如 “(oo)+”就表示一个‘oo’或者多个‘oo’
- 字符 ↩
评论 (0)