我有一个包含 2 列的文件,如下所示:
apple pear
banana pizza
spoon fork
pizza plate
sausage egg
如果一个单词出现在多行上,我想删除重复单词出现的所有行,如您所见 'pizza' 出现两次,因此应删除 2 行,以下是所需的输出:
apple pear
spoon fork
sausage egg
我知道使用:
awk '!seen[$1]++'
但是,这只会在字符串出现在一列中时删除行,我需要一个命令来检查两列。我怎样才能做到这一点?
一个基本的两步方法是创建一个非唯一单词列表,并将其传递给
grep -v
.对于第一部分,您可以使用
sort
anduniq -d
(在序列化单词之后 - 也许使用tr
)或 - 如果您想继续使用awk
,例如:它将记录拆分为空白并打印以前见过的记录。所以
尝试使用以下命令
输出