GNU/Linux >> Znalost Linux >  >> Ubuntu

Extrahovat hodnoty z terminálu?

Tato otázka zde již obsahuje odpovědi :Jak napsat awk skript, který zachytí čas pingu

(2 odpovědi)
Uzavřeno před 3 lety.

Potřebuji pomoc s extrahováním pouze hodnoty času při pingu pomocí sed.

ping 192.168.1.1
PING 192.168.1.11 (192.168.1.11) 56(84) bytes of data.
64 bytes from 192.168.1.11: icmp_seq=1 ttl=64 time=0.028 ms
64 bytes from 192.168.1.11: icmp_seq=2 ttl=64 time=0.027 ms
64 bytes from 192.168.1.11: icmp_seq=3 ttl=64 time=0.024 ms
64 bytes from 192.168.1.11: icmp_seq=4 ttl=64 time=0.031 ms

Takže po použití sed bych chtěl získat následující výstup:

ping 192.168.1.1 | sed '???'
0.028
0.027
0.024
0.031

Děkuji!

Přijatá odpověď:

Pomocí sed můžete udělat:

ping 192.168.1.1 | sed -n 's/.*time=\([^ ]*\).*/\1/p'

To jednoduše hledá nejdelší úsek bez prostoru po time= , používá k zachycení závorky, abychom jej později mohli označit jako \1 a prostě nahradí vše na lince tím, co bylo zachyceno. -n (ve výchozím nastavení netisknout) spolu s /p (vytiskněte, pokud to fungovalo) na konci operátoru substituce zajistí, že vytiskneme pouze relevantní řádky.

sed bych nepoužil za tímto účelem jsou zde jiné nástroje jednodušší. Například:

  1. grep

    ping 192.168.1.1 | grep -Po 'time=\K\S+'
    
  2. Perl

    ping 192.168.1.1 | perl -lne '/time=(\S+)/ && print $1'
    
  3. awk

    ping 192.168.1.1 | awk -F'[= ]' '/time=/{print $(NF-1)}'
    

Ubuntu
  1. Ubuntu – problém s pingem ze specifického rozhraní?

  2. Jak nakonfigurovat Firefox z terminálu?

  3. extrahovat průměrný čas z ping -c

  1. Jak se okamžitě odhlásit z Ubuntu z terminálu

  2. Extrahovat soubor z obrázku Dockeru?

  3. Extrahovat grafy z PDF?

  1. Otevřete složky v libovolné aplikaci terminálu od Nautilus

  2. Jak povolit/zakázat mobilní širokopásmové připojení z terminálu?

  3. Vypněte počítač se systémem Windows z linuxového terminálu