在unix系统中查找文本文件中的类似行

在unix系统中查找文本文件中的类似行,unix,Unix,我有一个名为tt.txt的文件,该文件的内容如下: fdgs jhds fdgs 我试图获得与文本文件中的输出类似的行 我的预期产出是: fdgs fdgs 为此,我使用了以下命令: uniq -u tt.txt > output.txt 但它的回报是: fdgs jhds fdgs 您知道如何修复它吗?如果“相似行”是指具有相同内容的行 从uniq命令中,uniq命令将仅从重复的行中过滤相邻的匹配行。因此,您需要先对输入进行排序,然后使用-D选项打印所有重复的行,如下所示。但是-

我有一个名为
tt.txt
的文件,该文件的内容如下:

fdgs
jhds
fdgs
我试图获得与文本文件中的输出类似的行

我的预期产出是:

fdgs
fdgs
为此,我使用了以下命令:

uniq -u tt.txt > output.txt
但它的回报是:

fdgs
jhds
fdgs

您知道如何修复它吗?

如果“相似行”是指具有相同内容的行

从uniq命令中,uniq命令将仅从重复的行中过滤相邻的匹配行。因此,您需要先对输入进行排序,然后使用-D选项打印所有重复的行,如下所示。但是-D选项仅限于GNU实现,这样做将以与输入不同的顺序打印输出

排序tt.txt | uniq-D

如果希望输出的顺序相同,则需要记住输入行号,并按如下方式再次对行号排序

cat-n tt.txt | sort-k2 | uniq-f1-D | sort-k1,1 | sed's/\s+[0-9]+\s+/'

  • cat-n将打印带有行号的内容
  • sort-k2将从2rd列开始对输入进行排序
  • uniq-f1将忽略第一列
  • sort-k1,1将按原始行号对输出进行排序
  • sed的/\s+[0-9]+\s+/'将删除第一列的行号

uniq-u命令将只输出唯一的输入行,这与您想要的完全相反。

如果“相似行”指的是具有相同内容的行

从uniq命令中,uniq命令将仅从重复的行中过滤相邻的匹配行。因此,您需要先对输入进行排序,然后使用-D选项打印所有重复的行,如下所示。但是-D选项仅限于GNU实现,这样做将以与输入不同的顺序打印输出

排序tt.txt | uniq-D

如果希望输出的顺序相同,则需要记住输入行号,并按如下方式再次对行号排序

cat-n tt.txt | sort-k2 | uniq-f1-D | sort-k1,1 | sed's/\s+[0-9]+\s+/'

  • cat-n将打印带有行号的内容
  • sort-k2将从2rd列开始对输入进行排序
  • uniq-f1将忽略第一列
  • sort-k1,1将按原始行号对输出进行排序
  • sed的/\s+[0-9]+\s+/'将删除第一列的行号
uniq-u命令将只输出唯一的输入行,这与您想要的完全相反。

awk中的一行:

$ awk '++seen[$0]==2;seen[$0]>1' file
fdgs
fdgs
awk中的一个:

$ awk '++seen[$0]==2;seen[$0]>1' file
fdgs
fdgs

是的,我喜欢。还有什么你想知道的吗?你为什么选择
-u
?看看你的建议,你应该读一下:是的,我想知道。还有什么您想知道的吗?为什么选择
-u
?查看您的建议,您应该阅读以下内容: