この質問にはすでに回答があります :pingの時間をキャッチするawkスクリプトの書き方
(2つの回答)
3年前に閉鎖されました。
Ubuntu
(2つの回答)
3年前に閉鎖されました。
sedを使用してpingを実行するときに、時間の値のみを抽出するためのサポートが必要です。
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
したがって、sedを使用した後、次の出力を取得したいと思います。
ping 192.168.1.1 | sed '???'
0.028
0.027
0.024
0.031
ありがとうございます!
承認された回答:
sed
を使用 あなたができること:
ping 192.168.1.1 | sed -n 's/.*time=\([^ ]*\).*/\1/p'
これは、time=
の後に最も長い非スペースを探すだけです。 、かっこを使用してキャプチャするため、後で\1
と呼ぶことができます。 そして、ライン上のすべてのものをキャプチャされたものに置き換えるだけです。 -n
(デフォルトでは印刷しない)/p
と一緒に (これが機能した場合は印刷)置換演算子の最後に、関連する行のみを印刷するようにします。
sed
は使用しません ただし、この場合、他のツールの方が簡単です。例:
-
grep
ping 192.168.1.1 | grep -Po 'time=\K\S+'
-
Perl
ping 192.168.1.1 | perl -lne '/time=(\S+)/ && print $1'
-
awk
ping 192.168.1.1 | awk -F'[= ]' '/time=/{print $(NF-1)}'