linux shell awk正则匹配,[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/,如需转载,请注明出处,否则将追究法律责任。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值