awk 看到的选项如何工作

aja*_*jay 0 awk

我最近遇到了 awk看到的选项。我可以看到它正在删除文件中的重复项。但不确定它是如何工作的尝试谷歌但没有找到任何结果,需要帮助澄清相同的问题。

cat tes
1
2
3
1
1
1
3
4
Run Code Online (Sandbox Code Playgroud)

awk 看到输出

cat tes | awk '!seen[$0]++'

1
2
3
4
Run Code Online (Sandbox Code Playgroud)

Kus*_*nda 5

seen是关联数组的任意名称。这不是任何类型的选择。您可以在其位置使用ab或大多数其他名称。

代码!seen[$0]++由一个测试和一个增量组成。

如果seen[$0],即与$0当前输入行key 关联的数组元素的值为零(或空),则测试为

与键对应的数组中的值$0然后递增,这意味着在找到相同值的所有其他时间,测试将为$0

结果是第一次在输入中看到特定行时测试为,其他时间为

每当没有关联操作的测试为true 时,就会触发默认操作。默认操作相当于{ print }or { print $0 },它打印当前记录,对于本示例中的所有帐户和目的,它是当前未修改的输入行。