Как извлечь все IP-адреса из строки, используя bash - PullRequest
0 голосов
/ 23 января 2020

У меня есть строка, из которой я хотел бы извлечь все IP-адреса. Я очень новичок в bash. Пожалуйста, помогите

#!/usr/bin/env bash

IP=$(ping -c 25 x.x.x.255)

"$ IP" будет иметь следующий текст. Пожалуйста, предложите способ получить только IP-адреса, такие как xxx252, xxx141 ......

PING x.x.x.255 (x.x.x.255): 56 data bytes
64 bytes from x.x.x.252: icmp_seq=0 ttl=64 time=0.111 ms
64 bytes from x.x.x.141: icmp_seq=0 ttl=255 time=2.200 ms
64 bytes from x.x.x.197: icmp_seq=0 ttl=64 time=70.087 ms
64 bytes from x.x.x.108: icmp_seq=0 ttl=64 time=70.136 ms

--- x.x.x.255 ping statistics ---
25 packets transmitted, 25 packets received, +12 duplicates, 0.0% packet loss

1 Ответ

0 голосов
/ 23 января 2020

Вы можете использовать параметры gre--E и -o:

$ ips=$(ping -c 4 example.com | grep -Eo '\s([0-9]+\.){3}[0-9]+\s')
$ echo $ips
93.184.216.34 93.184.216.34 93.184.216.34 93.184.216.34

Регламент соответствует пробелу \s, за которым следует группа захвата, состоящая из одной или нескольких цифр [0-9]+ и точки \. повторяется три раза {3}, затем следует [0-9]+\s. Информацию о параметрах grep можно найти в man grep.

...