【发布时间】:2018-05-28 20:02:53
【问题描述】:
我有一个类似这个例子的文件:
cat dog
mouse cat
dog cat
dog mouse
我想要的是删除那些包含相同单词但顺序相反的行,在这种情况下,我想要“cat dog”而不是“dog cat”。在真实文件中,我有大量的单词对(交互),我想删除冗余(我正在处理单向交互)。因此,我想要这个结果:
cat dog
mouse cat
dog mouse
我试过了,但它没有返回任何结果:
cat file | while read f1 f2; do awk -F" " '($1==$f2) && ($2==$f1)' file; done
在这段代码中,我只想找到重复的对。要删除重复,我会这样做:
cat file | while read f1 f2; do awk -F" " '($1!=$f2) && ($2!=$f1)' file; done
【问题讨论】:
-
我想要“cat dog”而不是“dog cat”为什么不反过来呢?
-
其实没关系。我想要“猫狗”或“狗猫”,但不是两者。
标签: linux bash awk while-loop