Hits

Linux grep 与正则表达式

Linux grep 与正则表达式

正则表达式

正则表达式与通配符不一样。正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串。vim、grep、awk、sed都支持正则表达式。

  • 基本正则表达式所定义的元字符
元字符 作用 例子 例子说明
^ 行首定位符 ^ty 匹配“t”开头,后紧跟一个跟“y”的字符串
$ 行尾定位符 txt$ 匹配以“t”结尾,前面两个字符是“t”、“x”的字符串
. 单个字符匹配 s. 匹配”s”后面有一个字符的字符串
* 限定符 s* “*“表示匹配其前导字符若干次,包括0次。这里是匹配有若干个”s”的字符串
[] 字符集匹配 [abc] 表示匹配”a”,“b”或”c”的字符串
[^] 字符集不匹配 [^abc 表示不匹配”a”,“b”,“c”里的任意字符
() 子表达式 ([0-9]{2})? 匹配两个或0个数字
x{m,n} 区间表达式 a{2,3} 表示”a”重复2~3次
  • 扩展正则表达式的元字符
元字符 作用 例子 例子说明
+ 限定符,同* s+ ”+“表示匹配其前导字符若干次,至少1次
? 限定符 ss? ”?“表示前面的字符可以重复0或者1次,这里一个“s”后面可能再跟一个”s”
  • POSIX 字符集
字符串 说明
[:alnum:] 匹配任意一个字母或者数字,等价于A-Za-z0-9
[:alpha:] 匹配任意一个字母,等价于 A-Za-z
[:digit:] 匹配任意一个数字,等价于 0-9
[:lower:] 匹配小写字母,等价于a-z
[:upper:] 匹配大写字母,等价于A-Z
[:graph:] 匹配一个看的见的字符,不包括空白字符
[:print:] 匹配一个可以打印的字符
[:blank:] 匹配空格和tab
[:space:] 匹配一个空白字符,包括空格、tab、换行、分页符<
[:punct:] 匹配一个标点符号
[:xdigit:] 匹配一个十六进制数字,即0-9,a-f,A-F

grep基本操作

grep -[acinv] '搜索内容' filename 搜索内容可以是正则表达式

  • -a 以文本文件方式搜索
  • -c 计算找到的符号行的次数
  • -i 忽略大小写
  • -n 顺便输出行号
  • -v 反向选择,即找 没有搜索字符串的行

本文链接:参与评论 »

--EOF--

专题「Linux相关知识」的其它文章 »

Comments