Use awk quando precisar de comparação baseada em campo
$ awk -F, 'NR==FNR{ip[$2]=$0; next} $2 in ip{delete ip[$2]} END{for(k in ip) print ip[k]}' events.txt source.txt
01.02.70 08h00,4.4.4.4,443
-
-F,set,como separador de campos de entrada -
NR==FNR{ip[$2]=$0; next}usa o segundo campo como chave e salva toda a linha no array associativo. Este bloco de código será executado apenas para a primeira entrada de arquivo (por exemplo, events.txt) -
$2 in ip{delete ip[$2]}quando o segundo arquivo (ou seja, source.txt) estiver processando, excluirá elementos emiparray se o segundo campo já estiver presente -
END{for(k in ip) print ip[k]}após toda a entrada ser processada, as linhas de impressão restantes emiparray
Ou, altere a ordem dos arquivos de entrada e imprima as linhas de events.txt se o segundo campo não estiver presente no source.txt
$ awk -F, 'NR==FNR{ip[$2]; next} !($2 in ip)' source.txt events.txt
01.02.70 08h00,4.4.4.4,443