動的 ping の部分文字列を返します。

動的 ping の部分文字列を返します。

これを実行すると、ping example.com各交換結果がコンソールに印刷されます。すべての情報を表示するのではなく、その結果のサブセットのみを表示するように各結果をフィルタリングしたいと思います。

したがって、代わりに:

PING example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=2 ttl=55 time=1201 ms
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=3 ttl=55 time=783 ms
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=4 ttl=55 time=417 ms
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=5 ttl=55 time=159 ms
64 bytes from 93.184.216.34: icmp_seq=6 ttl=55 time=886 ms

端末に印刷したい内容は次のとおりです。

1201ms
783ms
417ms
159ms
886ms

具体的な答えを受け入れますがping、動的手順を取り、返される各文字列を別の文字列として扱うことができる一般的な答えを好みます。それがより一般的だからです。私は特にシェルソリューションに興味があります。xargsシェルソリューションがパイプリダイレクトを許可する特定のプログラムの制限を解決できるのと同じ方法です。

答え1

私の提案はを使用することですsed。何かを別のものに変換したいだけでなく、動的な文字列が何を意味するのかわかりません。ほとんどのフィルタはこれを行います。

ping -c 3 1.1.1.1 | sed -En 's/.*=([0-9.]+) ([a-z]+)$/\1\2/p'
32.5ms
34.5ms
37.5ms

答え2

「動的プロセスを許可する」ということが何を意味するのかはわかりませんが、あなたのping場合は出力を次にパイプすることができます。cut

ping example.com | cut -d= -f4
12.6 ms
11.3 ms
19.4 ms

関連情報