有没有一种方法可以删除Unix中文件中的重复行?
我可以使用sort -u
和uniq
命令来做到这一点,但是我想使用sed
或awk
。
那可能吗?
最佳答案
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/