使用Linux命令对两个文件执行“减号”操作

时间:2009-09-03 01:19:05

标签: linux

我有4个按字母顺序排序的文件,A,B,C和D. 这些文件在每行包含一个字符串。 基本上,需要发生的是B中的任何内容都从A中删除。 结果将被剥夺C中的任何内容。 同样地,其结果将被剥夺D.

有没有办法使用Linux命令?

4 个答案:

答案 0 :(得分:5)

comm对此有好处:

cat B C D | sort | comm -2 -3 A -

或:

comm -2 -3 A B | comm -2 -3 - C | comm -2 -3 - D

取决于您的脚本更容易/更清楚。

答案 1 :(得分:2)

grep -x -v -f B A | grep -x -v -f C | grep -x -v -f D

-v开关是反向匹配(即匹配所有除外)。 -f开关获取一个文件,其中包含要匹配的模式列表。 -x开关强制它匹配整行(这样,作为其他行的子串的行不会导致删除较长的行)。

答案 2 :(得分:1)

查看join命令。阅读其手册页,你应该找到你想要的东西。

答案 3 :(得分:0)

join A B | join - C | join - D