2010-12-16 198 views
3

Linux命令允许我检查文件A中的所有行是否存在于文件B中? (它几乎像差异,但不完全)。另外文件A具有uniq行,与文件B一样。使用Linux命令差分文件

回答

3

的COMM命令比较两个排序的文件,一行行,并且是GNU的coreutils的一部分。

0
if cat A A B | sort | uniq -c | egrep -e '^[[:space:]]*2[[:space:]]' > /dev/null; then 
    echo "A has lines that are not in B." 
fi 

如果不重定向输出,你会得到所有有能力的不在B(除每个行会,如果它有一个2在前面)的行的列表。这依赖于A中的行是唯一的,而B中的行是唯一的。

如果它们不是,并且您不关心重复计数,则使用sortuniq将每个文件转换为唯一行列表相对简单。

1

那么,如果A有

a 
a 
b 

和B具有

a 
b 

将你想要的输出是(是或否)?

+0

我想输出是肯定的。 – syker 2010-12-16 04:44:21

1

使用diff命令。

这里是diff命令的完整使用的有用参见下3分钟

Click Here