comparação de dois arquivos classificados por primeiro campo comum


0

Eu tenho que comparar os IPs de dois /etc/hostsarquivos diferentes e mostrar uma diferença na exibição lado a lado.

Arquivo 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

Arquivo 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

E minha saída esperada

< 10.244.74.159   REF_UP-10

Eu já classifiquei as entradas por IP e usei diff <(cut -f1 hosts_sorted) <(cut -f1 hosts_new_sorted). No entanto, isso elimina os nomes de host necessários. Existe uma maneira de dizer ao diff apenas para usar a primeira coluna? No entanto, a comparação não deve incluir a segunda coluna.


De que maneira diff hosts_sorted hosts_new_sortednão está fazendo o que você quer?
Kusalananda

Ele também compara a segunda coluna (nome do host em /etc/hosts/)
Philipp Birkl

e se você tivesse um host que existisse apenas e somente em host_new_sorted 10.244.74.162 REF_UP-12-new? você não deseja essa linha, pois sua resposta aceita apenas verifica em uma direção, o que significa que imprime as linhas que hospedam apenas e existem apenas em host_sorted.
αғsнιη 24/04

Respostas:


0

Tente isso,

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

ele verificará a presença da primeira coluna de hosts_sortedin hosts_new_sorted, imprime se não estiver disponível.


1
Funciona apenas em uma direção. É o bastante?
pLumo 24/04
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.