Я не люблю просить о помощи, и по большей части могу во всем разобраться; однако я не могу понять, что я делаю неправильно.
Есть два файла [отредактированы по понятным причинам]:
Первый файл; Список IP-адресов для поиска.
$ OUT
1.1.1.1
2.2.2.2
111.111.111.111
Второй файл; Файл журнала для сканирования IP-адресов и получения ClientUID.
$ file
[0513.65] DevNet: Join succeeded: FoObAr playerid=0x0000000000000000
[0522.25] NetComeGo: Close IpNetDriverSteamworks_0 IpNetConnectionSteamworks_2 111.111.111.111:12345
[0522.25] DevOnline: EndRemoteClientAuthSession: ClientAddr: 111.111.111.111:12345, ClientUID: 00000000000000000
[0522.25] DevOnline: EndLocalServerAuthSession: ClientAddr: 111.111.111.111, ClientUID: 00000000000000000
[0522.25] DevOnline: EndLocalServerAuthSession: SessionUID: 4
Желаемый результат:
ClientAddr: 111.111.111.111 ClientUID: 00000000000000000
Я пробовал это:
awk --posix 'NR==FNR{a[NR]=$1;next}{for (i in a){if($4 ~ /^ClientAddr/ && $5 ~ /"^"a[i]/)print $4 $5 $6 $7}}' $OUT $file
также
awk --posix 'NR==FNR{a[$1];next}{for (i in a){if($4 ~ /^ClientAddr/ && $5 ~ /"^"a[i]/)print $4 $5 $6 $7}}' $OUT $file
Но это не работает; Я провел последние несколько дней за чтением и поиском информации ... но я просто не могу понять, что я сделал не так. Полный bash сценарий:
#!/bin/bash
file=$1
OUT=/tmp/scanLog/data.tmp
awk --posix '$2 ~ /^NetComeGo/ && $5 ~ /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/ {a[$5]++}END{for(i in a)if(a[i] > 100){print i}}' $file >$OUT
awk --posix 'NR==FNR{a[NR]=$1;next}{for (i in a){if($4 ~ /^ClientAddr/ && $5 ~ /"^"a[i]/)print $4 $5 $6 $7}}' $OUT $file
rm $OUT
В настоящее время у меня проблемы с психическим здоровьем; Надеюсь, эта просьба о помощи имеет смысл.