正则在Awk中用处比较多,这里就其主要用法做个大概的介绍。
awk中的regexp是用斜线包括,如/xx/, 就是一个比较简单的正则
awk '/foo/ {print $2}'
上面的示例是每行的记录只要包括foo字符串的,就将其第二个字段打印
注:/foo/ : 是指只要记录包含子串即可,不管其出现的位置
- str ~ /regexp/ str匹配正则表达式时,返回true
- str !~ /regexp/ str不匹配正则表达式时,返回true
- 正则中的转义字符
对于一些非可打印的字符,使用\进行转义。
如 \t : 代表tab \\ 代表\, \*代表*
- 正则中使用的operator
- ^ : 头部开始匹配
如^Sep : 则str必须以Sep开头,正则匹配才会返回true
- $ : 尾部匹配
如end$ : 则str必须以end结尾,则正匹配才会返回true
- . : 匹配任意的字符
- [...] : 匹配[]包含字符的某一个
如[0-9] 匹配任意的一个数字
[a-zA-Z] 匹配任意的字母
[MVX] 匹配字符’M’ ‘V’ ‘X’中的某一个
内置的表示:[:alnum:] 代表所有的字母和数字,
[:alpha:] 代表所有的字母 [:digit:] 代表所有的数字
- [^...] : 中括号中加入^, 匹配非[]内的所有字符
- | : 或的关系,^P | [0-9] 匹配所有的以P开头的字符串,或者包含数字的字符串
注:| 的优先级最低
- () : 将正则括起来
- 出现次数的operator: * + ? {m,n}
- awk的正则匹配是大小写敏感,可使用tolower(str) ~ /regexp/
参考文章:http://www.math.utah.edu/docs/info/gawk_5.html
您可能对下面文章也感兴趣: