小编典典

如何删除文件中的重复行而不在 Unix 中对其进行排序

all

有没有办法在 Unix 中删除文件中的重复行?

我可以使用sort -uanduniq命令来完成,但我想使用sedor awk

那可能吗?


阅读 60

收藏
2022-08-05

共1个答案

小编典典

awk '!seen[$0]++' file.txt

seen是一个关联数组,AWK 会将文件的每一行传递给它。如果一行不在数组中,则seen[$0]计算结果为 false。这!是逻辑 NOT
运算符,会将 false 反转为 true。AWK 将打印表达式计算结果为 true 的行。

++递增,seen以便seen[$0] == 1在第一次找到一行之后,然后seen[$0] == 2,依此类推。AWK
将除0""(空字符串)之外的所有内容评估为真。如果放置了重复行,seen!seen[$0]计算结果为
false,并且该行不会被写入输出。

2022-08-05