有没有一种方法可以删除Unix中文件中的重复行?

我可以使用sort -uuniq命令来做到这一点,但是我想使用sedawk
那可能吗?

最佳答案

awk '!seen[$0]++' file.txt
seen是Awk会将文件的每一行传递到的关联数组。如果行不在数组中,则seen[$0]将评估为false。 !是逻辑NOT运算符,会将false转换为true。 Awk将打印表达式计算结果为true的行。 ++seen递增,以便在第一次找到一行后找到seen[$0] == 1,然后再找到seen[$0] == 2,依此类推。
Awk将0""(空字符串)之外的所有内容评估为true。如果在seen中放置了重复的行,则!seen[$0]的评估结果为false,并且该行不会写入输出。

关于unix - 如何在不对Unix进行排序的情况下删除文件中的重复行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1444406/

10-09 21:05