Text-Processing

按共同的第一個欄位比較兩個排序的文件

  • April 24, 2019

我必須比較兩個不同/etc/hosts文件的 IP,並在並排視圖中顯示差異。

文件hosts_sorted

10.244.74.152   REF_UP-4
10.244.74.154   REF_UP-5
10.244.74.156   REF_UP-6
10.244.74.153   REF_UP-7
10.244.74.155   REF_UP-8
10.244.74.157   REF_UP-9
10.244.74.159   REF_UP-10
10.244.74.160   REF_UP-11

文件hosts_new_sorted

10.244.74.152   REF_UP-4-new
10.244.74.154   REF_UP-5-new
10.244.74.156   REF_UP-6-new
10.244.74.153   REF_UP-7-new
10.244.74.155   REF_UP-8-new
10.244.74.157   REF_UP-9-new
10.244.74.160   REF_UP-11-new

我的預期輸出

< 10.244.74.159   REF_UP-10

我已經按 IP 對條目進行了排序並使用了diff <(cut -f1 hosts_sorted) <(cut -f1 hosts_new_sorted). 但是,這會刪除所需的主機名。有沒有辦法告訴 diff 只使用第一列?但是,比較不應包括第二列。

試試這個,

awk 'FNR==NR{a[$1];next}!($1 in a)' hosts_new_sorted hosts_sorted
10.244.74.159   REF_UP-10

它將檢查 in 的第一列是否存在hosts_sortedhosts_new_sorted如果不可用則列印。

引用自:https://unix.stackexchange.com/questions/515223