Скриптинг Помогите отфильтровать IP-адрес

У меня большой текстовый файл, из которого я хочу извлечь строки данных, я хочу извлечь каждую строку, содержащую IP-адрес, который я могу указать (zzzz)

2015-02-26 00:00:00 Local3.Info x.x.x.x Feb 26 05:19:52  y.y.y.y 00:05:06:17 , C8:D7:19:61:D1:9B DHCP REQ: Valid IP->Valid IP
2015-02-26 00:00:00 Local3.Info x.x.x.x Feb 26 05:32:56  y.y.y.y 00:0D:8A:80 , 48:F8:B3:54:43:EB DHCP REQ: Valid IP->Valid IP
2015-02-26 00:00:00 Local5.Notice   x.x.x.x Feb 26 05:32:56  z.z.z.z BTS Sending CDR: 067,H,00:F0:3A:99,00:0D:8A:80,48:F8:B3:54:43:EB,z.z.z.z,10780,906
2015-02-26 00:00:00 Local3.Info x.x.x.x Feb 26 05:32:56  y.y.y.y 00:0D:8A:80 , 48:F8:B3:54:43:EB DHCP ACK: Valid IP->Valid IP: y.y.y.y
2015-02-26 00:00:00 Local5.Notice   x.x.x.x Feb 26 05:00:11  z.z.z.z AAA: Modulation Change to 16QAM recvd from 00:16:C4:ED

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

2015-02-26 00:00:00 Local5.Notice   x.x.x.x Feb 26 05:32:56  z.z.z.z BTS Sending CDR: 067,H,00:F0:3A:99,00:0D:8A:80,48:F8:B3:54:43:EB,z.z.z.z,10780,906
2015-02-26 00:00:00 Local5.Notice   x.x.x.x Feb 26 05:00:11  z.z.z.z AAA: Modulation Change to 16QAM recvd from 00:16:C4:ED

Любая помощь будет принята с благодарностью! Заранее спасибо

0
задан 20 March 2015 в 19:16

4 ответа

Кто-либо отсутствовал sed? Здесь Вы идете:

sed -i.bak '/z\.z\.z\.z/!d' file.txt

исходный файл будет сохранен как "file.txt.bak", и измененным файлом будет "file.txt". Если Вы не хотите создавать резервную копию исходного файла:

sed -i '/z\.z\.z\.z/!d' file.txt

, Если Вы просто хотите распечатать вывод, а не сохранить его:

sed '/z\.z\.z\.z/!d' file.txt
1
ответ дан 20 March 2015 в 19:16

Необходимо быть в состоянии использовать grep

grep -F 'z.z.z.z' logfile > results

-F (--fixed-strings), аргумент препятствует тому, чтобы разделители периода были интерпретированы с помощью синтаксиса регулярного выражения (который соответствовал бы 'любому символу'), а скорее как литеральные периоды.

3
ответ дан 20 March 2015 в 19:16

Можно использовать grep или awk.

grep 'z.z.z.z' your_file

awk имеет больше опций

awk '/z.z.z.z/ {print}' your_file

, но awk может сделать больше форматирования и имеет больше опций

, видят https://www.digitalocean.com/community/tutorials/how-to-use-the-awk-language-to-manipulate-text-in-linux

и

http://www.grymoire.com/Unix/Awk.html

для деталей

Тонны других опций, жемчуг работал бы также...

1
ответ дан 20 March 2015 в 19:16

Альтернатива Perl:

$ perl -lane 'print if /z.z.z.z/'  < input.txt                                                                               
2015-02-26 00:00:00 Local5.Notice   x.x.x.x Feb 26 05:32:56  z.z.z.z BTS Sending CDR: 067,H,00:F0:3A:99,00:0D:8A:80,48:F8:B3:54:43:EB,z.z.z.z,10780,906
2015-02-26 00:00:00 Local5.Notice   x.x.x.x Feb 26 05:00:11  z.z.z.z AAA: Modulation Change to 16QAM recvd from 00:16:C4:ED
0
ответ дан 20 March 2015 в 19:16

Другие вопросы по тегам:

Похожие вопросы: