「ping -c 1 www.google.com」を実行するたびに、次のような結果が表示されます。
PING www.google.com (xxx.xx.xxx.xxx) 56(84) bytes of data.
64 bytes from xxxxxxxx-xx-xxxxxxxxxx.net (xxx.xx.xxx.xxx): icmp_seq=1 ttl=56
time=25.8 ms
--- www.google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 25.816/25.816/25.816/0.000 ms
しかし、次のような単純な形式でpingを印刷したいと思います。
[23:00:25] 25.8 ms
この目標をどのように達成できますか?これまで私は試しました
ping -c 1 www.google.com | grep -oP '(?<=time\s/)w+' > ping.txt
時間なしでpingを印刷しますが、推測できるように動作しません。
答え1
努力する
ping -c 1 www.google.com | awk 'NR==2{print strftime("[%T]",systime()),substr($8,6),"ms"}'
現在時刻を取得し、systime()
%T表現(hh:mm:ss)の形式で指定するために使用されますstrftime
。次に、フィールド8の関連部分を印刷し、time=
不意の部分を除去する。
はい
ping -c 1 www.google.com | awk 'NR==2{print strftime("[%T]",systime()),substr($8,6),"ms"}'
[21:32:05] 1.03 ms
答え2
その他アッ方法:
ping -c1 www.google.com | awk -F'=' 'NR==2{ print strftime("[%T]",systime()),$NF; exit}'
[01:35:47] 41.5 ms
-F'='
- カスタムフィールド区切り記号$NF
- 最後のフィールド値exit
- 2番目のレコードへの入力処理を即座に停止します。