我最近遇到了 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)
seen是关联数组的任意名称。这不是任何类型的选择。您可以在其位置使用a或b或大多数其他名称。
代码!seen[$0]++由一个测试和一个增量组成。
如果seen[$0],即与$0当前输入行key 关联的数组元素的值为零(或空),则测试为真。
与键对应的数组中的值$0然后递增,这意味着在找到相同值的所有其他时间,测试将为假$0。
结果是第一次在输入中看到特定行时测试为真,其他时间为假。
每当没有关联操作的测试为true 时,就会触发默认操作。默认操作相当于{ print }or { print $0 },它打印当前记录,对于本示例中的所有帐户和目的,它是当前未修改的输入行。
| 归档时间: |
|
| 查看次数: |
790 次 |
| 最近记录: |