Если ваши входные файлы выглядят так, то есть первая версия, с пробелами после запятой:
File1.csv
Host, IP
PC1, 192.168.3.1
PC2, 192.168.3.2
PC3, 192.168.3.3
и:
File2. csv
Port, Type, S_Host, S_IP, Port, D_Host, D_IP, Port
2, tcp, N/A, 192.168.3.1, 2, N/A, 192.168.3.2, 8
3, tcp, N/A, 192.168.3.2, 2, N/A, 192.168.3.3, 3
Попробуйте:
#!/bin/bash
awk '
BEGIN {FS = ", "; OFS = ", "}
(FNR == NR) && (NR > 1) {hh[$2] = $1}
NR > FNR {
if (FNR == 1)
print;
else
print $1, $2, hh[$4], $4, $5, hh[$7], $7, $8;
}
' File1.csv File2.csv
Это результат, который я получаю:
Port, Type, S_Host, S_IP, Port, D_Host, D_IP, Port
2, tcp, PC1, 192.168.3.1, 2, PC2, 192.168.3.2, 8
3, tcp, PC2, 192.168.3.2, 2, PC3, 192.168.3.3, 3
Кроме того, если IP-адрес является publi c IP, мне нужно выполнить поиск whois вместо этого, чтобы получить OrgName
Я предлагаю вам задать еще один вопрос об этом втором topi c. Как в профессиональных письмах: один вопрос = один вопрос.