我有以下两个数字列表存储在两个不同的文件中:
File A:
7
1
2
9
File B:
10
8
4
9
现在我想找出设置操作A-B(即只找到A中但不在B中的那些数字)。有什么方法可以使用linux命令(比如sed)做同样的事情。我知道使用python可以做到这一点,但我很想知道是否有可能使用一些linux命令做同样的事情?
答案 0 :(得分:0)
简单,几乎正常工作的版本是:
grep -v -f file2 file1
即,使用file2
中的行作为模式;在file1
中匹配它们并打印未找到的(即file1 - file2
)。但是,如果file1
包含10
且file2
包含1
,该怎么办?然后我们遇到了问题,因为子串也匹配。我们可以这样解决:
grep -v -f <(sed 's/\(.*\)/^\1$/' file2) file1
即,预处理file2
前置^
并附加$
,以便匹配整行,而不是file1
中的子串。
答案 1 :(得分:0)
diff
就是这个工具:
diff f1 f2
1,3c1,3
< 7
< 1
< 2
---
> 10
> 8
> 4
f1具有此唯一编号7,1,2
f2具有此唯一编号10,8,4