linux比較文件輸出不同的內(nèi)容
目前據(jù)我所了解的有如下幾種方法,來(lái)比較兩個(gè)文件的行,以輸出他們的不同之處:
1) comm mission:
comm [-123] file1 file2 [> sfile]
NOTE: file1,file2 must be firstly sorted !
-1/2/3 means: -1 ----- rid the only retained contents in file1
-2 ----- rid the only retained contents in file2
-3 ----- rid the communal lines in both two files
正如,上面說(shuō)的那樣,comm命令運(yùn)用的前提是針對(duì)兩個(gè)sorted文件!
該命令是對(duì)兩個(gè)已經(jīng)排好序的文件進(jìn)行比較。其中file1和file2是已排序的文件。comm讀取這兩個(gè)文件,然后生成三列輸出:僅在file1中出現(xiàn)的行;僅在file2中出現(xiàn)的行;在兩個(gè)文件中都存在的行。如果文件名用“- ”,則表示從標(biāo)準(zhǔn)輸入讀取。
選項(xiàng)1、2或3抑制相應(yīng)的列顯示。例如comm - 12就只顯示在兩個(gè)文件中都存在的行;comm - 23只顯示在第一個(gè)文件中出現(xiàn)而未在第二個(gè)文件中出現(xiàn)的行;comm - 123則什么也不顯示。
2) grep mission:
grep -v -f file1 file2
/*注::此法在對(duì)比數(shù)字時(shí)候比較湊效果,文本對(duì)比不建議使用*/
3) awk mission:
awk '{print NR,$0}' file1 file2 |sort -k2|uniq -u -f 1|sort -k1|awk '{print $2}'
或者:
awk '{print $0}' file1 file2 |sort|uniq -u
4) diff mission:
diff [-opt] file1 file2