[关闭]
@haokuixi 2015-05-18T03:03:00.000000Z 字数 394 阅读 3346

awk '!a[$3]++' 的解释

shell awk


对于awk '!a[$3]++',需要了解3个知识点
1. awk数组知识,不说了
2. awk的基本命令格式 awk 'pattern{action}',省略action时,默认action是{print},如awk '1'就是awk '1{print}'
3. var++的形式:先读取var变量值,再对var值+1

以数据

1 2 3
1 2 3
1 2 4
1 2 5

为例,对于awk '!a[$3]++'
awk 处理第一行时: 先读取a[$3]的值再自增,a[$3]a[3]值为空(0),即为awk '!0',即awk '1',即awk '1{print}'
awk 处理第二行时: 先读取a[$3]值再自增,a[$3]a[3]值为1,即为awk '!1',即awk '0',即awk '0{print}'
.............

最后实现的效果就是只打印$3第一次出现的行,也就是去除$3重复的行

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注