grep и awk разбор строки - PullRequest
       38

grep и awk разбор строки

1 голос
/ 21 февраля 2011

У меня есть строка, которая выглядит следующим образом:

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=

Как я могу это сделать?Спасибо

Ответы [ 6 ]

2 голосов
/ 21 февраля 2011

Это будет работать, хотя, возможно, вы могли бы еще больше упростить его в одном скрипте awk:

awk  '{print $7}' <your file> | awk -F= '{print $2}' | sort -u
1 голос
/ 22 февраля 2011

grep -o 'SRC=\([^ ]\+\)' | cut -d= -f2 | sort -u

0 голосов
/ 22 февраля 2011
grep -Po "SRC=(.[^\s]*)" file | sed 's/SRC=//' | sort -u

Рубин (1,9 +)

ruby -ne 'puts $_.scan(/SRC=(.[^\s]*)/)[0] if /SRC=/' file| sort -u
0 голосов
/ 21 февраля 2011

При этом 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
0 голосов
/ 21 февраля 2011

Этот скрипт awk подойдет:

{a[$7]=1} 

END{for (i in a) print i}
0 голосов
/ 21 февраля 2011
cat thefile | grep SRC= | sed -r 's/^.*SRC=([^ ]+).*$/\1/' | sort | uniq
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...