awk成长篇的几个例子

实验环境:CentOS6.5自带的gawk

[root@localhost ~]# awk --version
GNU Awk 3.1.7

1.--re-interval支持匹配次数的扩展

[root@localhost ~]# echo 1234567 |awk  '/[0-9]{3,}/'
[root@localhost ~]#

[root@localhost ~]# echo 1234567 |awk  --re-interval '/[0-9]{3,}/'
1234567


2.有两个文件a.txt和b.txt,现在需求输出两个文件共有的行

[root@localhost ~]# cat a.txt
ab

123

cde

[root@localhost ~]#cat b.txt

ab

1234

cdefg

[root@localhost ~]# awk 'ARGIND==1{a[$0]}ARGIND==2&&($0 in a){print $0}'   a.txt  b.txt
ab

也可以是用下面这个:

[root@localhost ~]# awk 'NR==FNR{a[$0]}NR!=FNR&&($0 in a){print $0}' a.txt b.txt
ab

但是当ab在某个文件有两行的情况下,会有什么不同呢?

[root@localhost ~]# echo ab >>a.txt

[root@localhost ~]# awk 'NR==FNR{a[$0]}NR!=FNR&&($0 in a){print $0}' a.txt b.txt
ab

好像没啥事?不过你也可能想要这种情况,把这两个文件的顺序换一下

[root@localhost ~]# awk 'NR==FNR{a[$0]}NR!=FNR&&($0 in a){print $0}'  b.txt a.txt
ab
ab


3.通过substr进行小数四舍五入

substr简介substr(r,s,t) 返回字符串r中从第s位开始,长度为t的部分

[root@localhost ~]# echo 4.4 | awk -F. 'substr($2,0,1)>=5?a=$1+1:a=$1{print a}'
4

[root@localhost ~]# echo 4.5 | awk -F. 'substr($2,0,1)>=5?a=$1+1:a=$1{print a}'
5



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值