【发布时间】:2011-01-10 17:25:47
【问题描述】:
鉴于这两个文件:
$ cat A.txt $ cat B.txt
3 11
5 1
1 12
2 3
4 2
我想在 B 中找到 A“但不是”中的行号。 它的unix命令是什么?
我试过了,但似乎失败了:
comm -3 <(sort -n A.txt) <(sort -n B.txt) | sed 's/\t//g'
【问题讨论】:
-
您可能有充分的理由使用 Unix one-liner,但您是否考虑过编写 Perl 或 Python 脚本来实现它?这可以更快地编写并且更容易阅读和修改。 Python 在语言中内置了基于集合的操作,因此只需几行代码,您就可以在这里实现您想要做的事情。
-
@avpx:你是对的。在 Python 中,就像
''.join(set(open('A.txt')) - set(open('B.txt')))一样简单。 -
@Alok:这是一个很好的方法,当然比我写的要短。赞一个。
标签: linux unix comm set-operations