grep命令常用用法
-a :将binary文件以text文件的方式搜寻数据
-c :计算找到"搜索字符串"的次数,一次也只能一个
-i :忽略大小写的不同
-n :顺便输出行号
-v :反向选择,亦显示处没有“搜索”内容的那一行。
--color :在找到的关键词部分加上颜色显示。
grep与正规表达式
字符类
[ae] //代表 a或者e 中的一个字符
[^g]oo //查找 不以g开头,但是以oo结尾的字符串
[^a-z]oo //查找不以小写开头,但是以oo结尾的字符串
大写英文/小写英文/数字可以使用[a-z],[A-Z],[0-9]。
行首与行尾字节 ^ $
这里的 ^ 与$符号,跟在编程语言中搜索字符串是使用的正则有所差别,是值得,这一行以什么开头和结尾,而不是指的某个字符串。
'^the' //查找以the开头的行
'^[a-z]' //以小写字符开头的行。
'^[^a-zA-Z]' //不要开头是英文字母,^在中括号内外的意思不同,在外边表示以xxx开头,在括号内表示取反
'\.' //表示小数点,小数点在grep命令中也有特殊含义,所以要转义。
'^$' //空白行
任意一个字节 . 与重复字节 *
. (小数点):代表『一定有一个任意字节』的意思;
* (星号):代表『重复前一个字符, 0 到无穷多次』的意思,为组合形态
限定连续 RE 字符范围 {}
'o\{2\}' //两个o的字符串.
'go\{2,5\}g' //g 后面接 2 到 5 个 o ,然后再接一个 g 的字串
'go\{2,\}g'//g 后面接 2个一行上的o,然后以g结尾.
扩展grep(grep -E 或者 egrep):
使用扩展grep的主要好处是增加了额外的正则表达式元字符集。
打印所有包含NW或EA的行。
egrep 'NW|EA' testfile
对于标准grep,如果在扩展元字符前面加\,grep会自动启用扩展选项-E。
grep 'NW\|EA' testfile
搜索所有包含一个或多个3的行。
egrep '3+' testfile
grep -E '3+' testfile
grep '3\+' testfile
搜索所有包含0个或1个小数点字符的行。
egrep '2\.?[0-9]' testfile
grep -E '2\.?[0-9]' testfile
grep '2\.\?[0-9]' testfile
搜索一个或者多个连续的no的行。
# egrep '(no)+' testfile
# grep -E '(no)+' testfile
# grep '\(no\)\+' testfile