AWK入门2

模式匹配,示例文件还用上一篇的那个
[quote]$ cat file2
First Name, Last Name, age
Barack,Obama,50
字段1,字段2,44
Michelle,Obama,50
Nonsense,Obamani,11[/quote]
找出含有Obama的行并打印
[quote]awk '$0 ~ /Obama/{print}' file2
Barack,Obama,50
Michelle,Obama,50
Nonsense,Obamani,11[/quote]
~是模式匹配的操作符,要匹配的模式用//包起来,默认是对整行,也就是$0做匹配,默认的操作就是打印,所以这个命令可以简写为
[quote]awk '/Obama/' file2
Barack,Obama,50
Michelle,Obama,50
Nonsense,Obamani,11[/quote]
现在我只想精确的匹配姓Obama的,而不想找出Obamani这个干扰项,那可以用两个==做精确匹配
[quote]awk -F, '$2=="Obama"' file2
Barack,Obama,50
Michelle,Obama,50[/quote]
精确匹配的时候,如果是字符串,字符串要用双引号包起来,如果是数字,可以包也可以不包。
也就是说下面这两个操作是等效的
[quote]awk -F, '$3=="50"' file2
awk -F, '$3==50' file2[/quote]
模式就是正则表达式可以写的复杂一些,比如用|来连接多个条件,用^和$指定开头结尾。还可以用!~来表示不匹配后面的模式。对于值为数字的列,还可以用>,>=,<,<=等比较符。模式操作还可以有多个,用&&和||表示与和或。比如下面这样
[quote]awk -F, '$2~/Obama/ && $3>=50' file2
Barack,Obama,50
Michelle,Obama,50[/quote]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值