Я не люблю просить о помощи и по большей части могу во всем разобраться; однако я не могу понять, что я делаю неправильно.
Есть два файла [отредактировано по понятным причинам]:
Первый файл; Список IP-адресов для «поиска».
$OUT
1.1.1.1
2.2.2.2
111.111.111.111
Второй файл; Это файл журнала для сканирования IP-адресов и получения ClientUID.
$файл
[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
В настоящее время у меня проблемы с психическим здоровьем; Я надеюсь, что этот запрос о помощи имеет смысл.