我有一个名为tt.txt
的文件,该文件的内容如下:
fdgs
jhds
fdgs
我正在尝试获取与文本文件中的输出相似的行。
我的预期输出是:
fdgs
fdgs
为此,我使用了以下命令:
uniq -u tt.txt > output.txt
但它返回:
fdgs
jhds
fdgs
您知道如何解决吗?
答案 0 :(得分:1)
如果用相似的行表示内容相同的行。
在uniq manpage中,uniq命令仅从重复的行中过滤相邻的匹配行。因此,您需要首先对输入进行排序,并使用-D选项来打印所有重复的行,如下所示。但是,-D选项仅限于GNU实现,并且这样做将以与输入不同的顺序打印输出。
排序tt.txt | uniq -D
如果您希望输出的顺序相同,则需要记住输入的行号并像这样再次对行号进行排序
cat -n tt.txt |排序-k 2 | uniq -f 1 -D |排序-k 1,1 | sed's / \ s + [0-9] + \ s + //'
uniq -u命令将仅输出唯一的输入行,这与您想要的完全相反。
答案 1 :(得分:1)
awk中的一个:
$ awk '++seen[$0]==2;seen[$0]>1' file
fdgs
fdgs