Usando join
:
join --header -t, -11 -23 -a1 <(awk 'NR > 1 {print | "sort -t, -k1"; next} 1' services) <(awk 'NR > 1 {print | "sort -t, -k3"; next} 1' objects)
join --header -t, -11 -23 -a1 <(
awk '
NR > 1 {
print |
"sort -t, -k1";
next
}
1
' services
) <(
awk '
NR > 1 {
print |
"sort -t, -k3";
next
}
1
' objects
)
-
--header
: trata a primeira linha em cada arquivo como cabeçalhos de campo, imprimindo-os sem tentar emparelhá-los -
-t,
: define,
como o separador de campos de entrada e saída -
-11
: junta-se ao campo # 1 deservices
-
-23
: junta-se ao campo # 3 deobjects
-
-a1
: também imprime linhas não parciais deservices
-
<(awk 'NR > 1 {print | "sort -t, -k1"; next} 1' services)
: classificaservices
na coluna1
excluindo o cabeçalho -
<(awk 'NR > 1 {print | "sort -t, -k3"; next} 1' objects)
: classificaobjects
na coluna3
excluindo o cabeçalho
% cat objects
IP,MASK,DESCRIPTION
10.10.3.94,255.255.255.255,Rob
10.10.3.95,255.255.255.255,Mark
10.10.3.96,255.255.255.255,John
% cat services
DESCRIPTION,OrgIP,Service
Rob,1.1.1.1,Purple
John,2.2.2.2,Green
Mark,3.3.3.3,Yellow
% join --header -t, -11 -23 -a1 <(awk 'NR > 1 {print | "sort -t, -k1"; next} 1' services) <(awk 'NR > 1 {print | "sort -t, -k3"; next} 1' objects)
DESCRIPTION,OrgIP,Service,IP,MASK
John,2.2.2.2,Green,10.10.3.96,255.255.255.255
Mark,3.3.3.3,Yellow,10.10.3.95,255.255.255.255
Rob,1.1.1.1,Purple,10.10.3.94,255.255.255.255