У меня есть строка, которая выглядит следующим образом:
Feb 21 1:05:14 host kernel: [112.33000] SRC=192.168.0.1 DST=90.90.90.90 PREC=0x40 TTL=51 ....
Я хотел бы получить список уникальных IP-адресов из SRC=
SRC=
Как я могу это сделать?Спасибо
Это будет работать, хотя, возможно, вы могли бы еще больше упростить его в одном скрипте awk:
awk '{print $7}' <your file> | awk -F= '{print $2}' | sort -u
grep -o 'SRC=\([^ ]\+\)' | cut -d= -f2 | sort -u
grep -Po "SRC=(.[^\s]*)" file | sed 's/SRC=//' | sort -u
Рубин (1,9 +)
ruby -ne 'puts $_.scan(/SRC=(.[^\s]*)/)[0] if /SRC=/' file| sort -u
При этом IP-адреса будут печататься по порядку без строки «SRC =»:
awk '{a[$7] = $7} END {asort(a); for (i in a) {split(a[i], b, "="); print b[2]}}' inputfile
Пример вывода:
192.168.0.1 192.168.0.2 192.168.1.1
Этот скрипт awk подойдет:
{a[$7]=1} END{for (i in a) print i}
cat thefile | grep SRC= | sed -r 's/^.*SRC=([^ ]+).*$/\1/' | sort | uniq