我正在尝试使用sed命令在文件中打印重复的行。 在文件中,我有以下内容:
hi
hello
hi
how
hello
如何使用sed命令打印此文件中的重复行?
示例:输出应为:
hi
hello
答案 0 :(得分:4)
当您可以使用sed
二进制文件时,不确定为什么必须在uniq
。 Anywho,文件需要排序,所以我们必须先做。
使用uniq
和我的首选方式:
$ sort file | uniq -d
hello
hi
使用GNU sed
:
$ sort file | sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'
hello
hi
N
命令从输入中读取下一行,该命令将下一行追加到由“\ n”字符分隔的模式空间。 $!
阻止它在最后一行上执行。 t
命令将脚本带到自动打印当前模式空间的末尾。 D
,删除不重复的字符串。 如果您愿意,可以通过<(sort file)
删除管道来使用流程替换。
答案 1 :(得分:0)
尝试类似:
sort file.txt | uniq -d
对文件进行排序,然后打印重复的行。如果你想忽略这种情况,那么在uniq命令中使用-i选项。