awk去重

本例循序渐进演示awk去重的各种功能
例如某1og 或txt下具有如下格式的文本(暂定文本名为test.log)


16:12:35 siteId 3333338732 siteName a11
16:12:36 siteId 4333338732 siteName b22
16:12:38 siteId 3333338732 siteName a11
16:12:39 siteId 3333338732 siteName a11
16:12:40 siteId 5333338732 siteName c33
16:12:41 siteId 4333338732 siteName b22
16:12:56 sisdeId 3333338732 siteName a11
16:12:77 siddteId 3333338732 siteName a11
16:12:88 sitseId 3333338732 siteName a11
16:12:99 sidddteId 3333338732 siteName a11
16:12:101 sitxxxxxxeId 3333338732 siteName


[b]1. 以空格作为域,截取 3列 以后的字符展示 (如果是制表符 即为 d\t)[/b]
1,cut -d" " -f 3- test.log 


执行命令之后结果为:


siteId 3333338732 siteName a11
siteId 4333338732 siteName b22
siteId 3333338732 siteName a11
siteId 3333338732 siteName a11
siteId 5333338732 siteName c33
siteId 4333338732 siteName b22
sisdeId 3333338732 siteName a11
siddteId 3333338732 siteName a11
sitseId 3333338732 siteName a11
sidddteId 3333338732 siteName a11
sitxxxxxxeId 3333338732 siteName a11



[b]2.根据列名,截取特定行,然后输出[/b]

cut -d" " -f 3- test.log|awk '{if($1=="siteId" && $3=="siteName"{print $0}}'



结果如下

siteId 3333338732 siteName a11
siteId 4333338732 siteName b22
siteId 3333338732 siteName a11
siteId 3333338732 siteName a11
siteId 5333338732 siteName c33
siteId 4333338732 siteName b22


注意 awk中的 列是截取之后的。此时的siteId 为第一列了。

[b]3.统计某重复行出现的次数,并输出去重后的每行, 截取特定的列 显示的时候用空格[/b]
less test.log |awk '{if($3=="siteId" && $5=="siteName"){a[$4" "$5" "$6]++}} END {for (j in a) print a[j],j}'


结果如下:

1 5333338732 siteName c33
2 4333338732 siteName b22
3 3333338732 siteName a11



[b]4.将结果倒序输出[/b]less test.log |awk '{if($3=="siteId" && $5=="siteName"){a[$4" "$5" "$6]++}} END {for (j in a) print a[j],j}' |sort -rn

3 3333338732 siteName a11
2 4333338732 siteName b22
1 5333338732 siteName c33
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值