grep及正则表达式
grep [OPTIONS] PATTERN [FILE...]
OPTIONS:
-i:忽略字符的大小写
-o:仅显示匹配到的字符串
-v:显示不能被模式匹配到的行
-E:支持使用扩展的正则表达式,grep -E等同于egrep,正则表达式可以不使用转义符\
-q:静默模式,即不输出任何信息
-A #:显示被模式匹配的行及其后#行
-B #:显示被模式匹配的行及其前#行
-C #:显示被模式匹配的行及其前后各#行
正则表达式元字符
‘^‘: 锚定行首 cat try.txt | grep "^I" 显示以"I"开头的行
‘$’: 锚定行尾 cat try.txt | grep ".$" 显示以"."结尾的行
‘.‘: 匹配任一一个字符
‘*’: 匹配零个或多个先前字符,.*组合起来就是匹配多个任意字符
‘\?‘:匹配其前面的字符0次或者1次; cat try.txt | grep -o "C+\?" 显示C+出现的所有位置(匹配+号0次或一次)
‘\+’:匹配其前面的字符1次或者多次; cat try.txt | grep -o "C+\+" 示C++出现的所有位置(匹配+号1次或多次)
‘\{m\}‘:匹配其前面的字符m次(\为转义字符)
‘\{m,n\}’:匹配其前面的字符至少m次,至多n次
‘[]‘: 匹配一个指定范围内的字符 | ‘[^]’匹配指定范围外的任意单个字符
‘\<‘或‘\b’:锚定词首,‘\>’或‘\b’:锚定词尾(可用\<PATTERN\>:匹配完整单词) cat try.txt | grep -o "\bthi.k\b" 匹配单词诸如think,thick...
‘\(\)’:小括号的作用,是对文本进行分组。 grep -o 'C\(++\).*\1' try.txt 输出从C++之后再次匹配++之间的所有字符
- \1:模式从左侧起,第一个左括号及与之匹配的右括号之间模式匹配到的内容
- \2:模式从左侧起,第二个左括号及与之匹配的右括号之间模式匹配到的内容...