ping出力部分の横に時刻と日付を表示

ping出力部分の横に時刻と日付を表示
#!/bin/bash
ping -c 1 8.8.8.8 | awk '{print $7}'
date

したがって、上記のコードでは、日付と時刻を次の形式で表示したいと思います。

Tue May 5 11:11:11 UTC 2020  time=0.838 ms

これまでこの出力を印刷します。

data.
time=1.24
packet
Tue May  5 23:31:33 UTC 2020

UTC 2020の横に時間= 1.24が必要です。

答え1

ping -c 1 8.8.8.8 | awk -v date="$(date)" '$7 ~ /^time/{ print date, $7, $8 }'

これは、コマンド置換の出力をdateawk変数に保存dateし、7番目のフィールドがで始まる場合にのみ日付と7番目と8番目のフィールドを印刷しますtime

答え2

指定したとおりに完了すると、このメッセージが表示されます。

echo -n "$(date) "
ping -c 1 8.8.8.8 | awk '$7 ~ /^time=/ {print $7}'

投稿に矛盾する例があるため、単位フィールドが必要かどうかは完全には明確ではありません。これにより、エンディングをこのように変更します。print $7,$8

答え3

echo "$(date)  time=$(ping -c 1 8.8.8.8 | awk '/transmitted/{print $NF}')"

$( .... ) 構文は、角かっこ内でコマンドを実行し、ここに出力を挿入するという意味です。

pingコマンドは他の提案に従いますが、出力はわずかに異なるようにフィルタリングされます。これはpingの出力です。

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=54 time=22.9 ms

--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 22.919/22.919/22.919/0.000 ms

awkコマンドは、/translated/と一致する行を検索し、その行の最後の値(この場合は時間値)を出力します。行の単語数は、「ping」の実装や出力などによって異なります。したがって、常に行の最後の要素を選択するためにNFを使用します。

関連情報