我正在尝试使用 sed 命令打印文件中的重复行。在一个文件中,我有以下内容:
hi
hello
hi
how
hello
Run Code Online (Sandbox Code Playgroud)
如何使用 sed 命令打印此文件中的重复行?
示例:输出应为:
hi
hello
Run Code Online (Sandbox Code Playgroud)
不确定为什么必须在sed可以使用uniq二进制文件时使用它。任何人,文件需要排序,所以我们必须先这样做。
使用uniq和我的首选方式:
$ sort file | uniq -d
hello
hi
Run Code Online (Sandbox Code Playgroud)
使用GNU sed:
$ sort file | sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'
hello
hi
Run Code Online (Sandbox Code Playgroud)
N命令从输入中读取下一行,该命令将下一行附加到由“\n”字符分隔的模式空间。$! 防止它在最后一行执行。 t命令将脚本带到自动打印当前模式空间的末尾。D执行,删除非重复字符串。如果您愿意,您可以使用进程替换<(sort file)来移除管道。