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 emip
array 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 emip
array
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