如何减去B中出现的A行?

时间:2015-10-14 21:27:15

标签: bash sh

我想使用先前pacman命令的输出过滤pacman命令的输出并将结果发送到文件中,这个想法是在第一个输出中删除重复也是在第二个。

让我们说:

a=`pacman -Qm`
# This produces the output
# package1 v0.0
# package2 v0.0
# packageN v0.0
b=`pacman -Qet`
# This produces the output
# package9 v0.0
# package2 v0.0
# packageN v0.0

我想要的是产生这个输出:

package1 v0.0

2 个答案:

答案 0 :(得分:1)

如果可以在文件中输出命令,那么可以使用 comm 命令

来实现

comm - 逐行比较两个已排序的文件

例如。以下

$pacman -Qm | sort > file1.txt
$pacman -Qet | sort > file2.txt

# in below command
# -2 suppress lines unique to file2.txt, 
# -3 supresses lines which appear in both files
# output will have only lines which are unique to file1.txt
$ comm -2 -3 file1.txt file2.txt > file3.txt 

答案 1 :(得分:0)

使用差异http://linux.die.net/man/1/diff 将输出管道传输到2个文件。差异文件。