[Shell] awk学习(3)-regular expression 正则表达式

A regular expression is used as a pattern by enclosed it in slashes.

^    :this matches the begining of a string  (awk '/^J/' ff2 :以J开头)            
$    :this matches only at the end of the string  (awk '/7$/' ff2:以7结尾)
.    :matches any single character  (awk '/J.n/' ff2:以J为首,n为尾,中间只有一个字符的匹配)
[...]:matches any one of the character that are enclose in the square brackets.   (awk '/J[au]/' ff2 :以Ja或者Ju匹配的)
[^...]:like [...] except character not in the square bractets.  (awk '/J[^u]/' ff2 :除去Ju的匹配)
|    :means or (awk '/^O|0$/' ff2  :以O开始,0结尾) (awk '$1~/^O|g$/' ff2 :第一个域以O开始,g结尾)
(...):匹配组(awk '$1~/(foo|net)/' ff1  :第一个域包含foo或者net的)
*    :表示匹配之前字符串>=0次 (awk '/f[o]*/' ff1  :匹配o >=0次)
+    :表示匹配之前的字符串>0次,至少又一次  (awk '/f[o]+/' ff1  :匹配o >0次)
?    :表示匹配之前的字符串0次或者1次,0或者1次  (awk '/Ma?/' ff2)
{n}  :表示匹配之前的字符串n次  (wh{3} matches whhh 其他的wh,whh,w都是错误的)
{n,} :表示匹配之前的字符串>=n次 (wh{3,} matches whhh,whhhh,whhhhh.....)
{n,m}:表示匹配之前的字符串>=n,<=m次  (wh{3,5} matches whhh,whhhh,whhhhh)
[a-z]:表示a-z的任意字符 [a-dx-z]=[abcdxyz]


1.整行进行表达式匹配
[/tmp/test]# awk '/foo/{print $2}' ff1
555-1234
555-6699
555-6480
555-2127

2.指定域进行表达式匹配 
~/exp/匹配
!~/exp/不匹配
[/tmp/test]# awk '$2~/12/' ff1        #匹配第二域中有12的行
[/tmp/test]# awk '$2!~/12/' ff1       #匹配第二域中不存在12的行

3.大小写忽略
[/tmp/test]# awk 'tolower($1)~/ja/' ff2
Jan 13 25 15 115
Jan 21 36 64 620
另一种方法是使用gawk 的IGNORECASE=1


特殊字符的特殊意义
[:alnum:] 代表英文大小写字节及数字,亦即 0-9, A-Z, a-z
[:alpha:] 代表任何英文大小写字节,亦即 A-Z, a-z
[:blank:] 代表空白键与 [Tab] 按键两者
[:cntrl:] 代表键盘上面的控制按键,亦即包括 CR, LF, Tab, Del.. 等等
[:digit:] 代表数字而已,亦即 0-9
[:graph:] 除了空白字节 (空白键与 [Tab] 按键) 外的其他所有按键
[:lower:] 代表小写字节,亦即 a-z
[:print:] 代表任何可以被列印出来的字节
[:punct:] 代表标点符号 (punctuation symbol),亦即:" ' ? ! ; : # $...
[:upper:] 代表大写字节,亦即 A-Z
[:space:] 任何会产生空白的字节,包括空白键, [Tab], CR 等等
[:xdigit:] 代表 16 进位的数字类型,因此包括: 0-9, A-F, a-f 的数字与字节

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24237320/viewspace-2080596/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24237320/viewspace-2080596/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值