文件准備
創建兩個文件,分別為a.txt和b.txt,它們所含內容分別為:
a.txt | b.txt |
---|---|
1-wfhune 2-chdamnsbchj 3-uyr92fiubkqw 5-cgvdnsb |
2-djyv 4-dvcahsgdb 5-wvchdfyt |
普通用法,整行對比
命令 | diff a.txt b.txt | grep -f a.txt b.txt | grep -vf a.txt b.txt |
---|---|---|---|
解釋 | 比較兩個文件 | 取兩個文件中都有的行 | 取b文件中有,但a文件中沒有的行 |
結果 | 1,4c1,3 < 1-wfhune < 2-chdamnsbchj < 3-uyr92fiubkqw < 5-cgvdnsb --- > 2-djyv > 4-dvcahsgdb |
空 | 2-djyv 4-dvcahsgdb 5-wvchdfyt |
高級用法,每行關鍵部分對比
回顧一下兩個文件中的內容,格式都是 x-yyyy這種格式,我們認為x為鍵,yyyy為值。現在我們只想比較x,而不關心yyyy。
該怎么辦呢?
命令 | grep -vf <(cut -d - -f 1 a.txt) <(cat b.txt) | grep -vf <(awk -F"-" '{print $1}' a.txt) <(cat b.txt) |
---|---|---|
解釋 | <() 用於命令嵌套。 |
這里只是用awk命令替換了cut命令,作用相同。 awk 的 -F參數用於定義分隔符,printf $X 提取分割后的第X段文本。 |
結果 | 4-dvcahsgdb | 4-dvcahsgdb |