我正在尝试使用 sed 命令打印文件中的重复行。 在一个文件中,我有以下内容:
hi
hello
hi
how
hello
如何使用 sed 命令打印此文件中的重复行??
示例:输出应该是:
hi
hello
最佳答案
不确定为什么它必须在 sed
中什么时候可以使用 uniq
二进制。任何人,文件需要排序,所以我们必须先做。
使用 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)
移除管道。
关于linux - 使用 sed 命令打印重复行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28770389/