2010-12-16 195 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