按共同的第一个字段比较两个排序的文件

按共同的第一个字段比较两个排序的文件

我必须比较两个不同文件的 IP/etc/hosts并在并排视图中显示差异。

文件主机排序

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

文件主机新排序

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 仅使用第一列?然而,比较不应包括第二列。

答案1

尝试这个,

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

它将检查hosts_sortedin的第一列是否存在hosts_new_sorted,如果不可用则打印。

相关内容