Você pode fazer isso com um script simples direto da linha de comando, usando cut (1) ao invés de awk (1), assim:
$ for field in 2 3 4; do cut -d\; -f${field} list* | sort | uniq -d; done
Se eu tiver 2 listas que contenham o seguinte (exemplos):
list1
x;00:26:82:50:00:00;192.168.1.195;COMPUTER1
x;00:26:82:50:11:11;192.168.1.195;COMPUTER2
x;00:26:82:50:22:22;192.168.1.196;COMPUTER3
list2
x;00:26:82:50:11:11;192.168.1.197;COMPUTER3
Quando eu executo este comando, mostre-me duplicatas:
awk -F\; '{print $2}' list* | sort | uniq -d
out: 00:26:82:50:11:11
awk -F\; '{print $3}' list* | sort | uniq -d
out: 192.168.1.195
awk -F\; '{print $4}' list* | sort | uniq -d
out: COMPUTER3
A minha pergunta é:
Como posso iniciar o comando (awk -F \; .. etc) em uma única linha e obter os mesmos resultados?
PD: sem & &
Obrigado