私は次のような結果を得ました。
echo "$i"
**@timestamp:** `2023-01-18T15:08:36.698Z`
awk
出力して次のようにしたいと思います。
Wed 18 Jan 2023 06:50:38 PM EST
これが私が今まで試したことです:
echo "$i" | awk -F'`' '{print $1, "`"strftime("%Y-%m-%d %T", $2)"`"}'
**@timestamp:** `1969-12-31 19:33:43`
なぜ1969年となっているのかよくわかりません…ご存知ですか?
date コマンドはフォーマットを完全に検出して変更できます。
date -d $(echo "$i" | awk -F'`' '{print $2}')
Wed 18 Jan 2023 10:08:36 AM EST
なぜawkが機能しないのですか?
答え1
コメントですでに指摘されているように、他のツール時間機能がGNUのdate
。 GNU awkの時間関数を使って実行したいことをする方法は次のとおりです。
$ TZ='EST' awk -F'`' '{print strftime("%a %d %b %Y %T %Z",mktime(gensub(/[^0-9]/," ","g",$2),1))}' file
Wed 18 Jan 2023 10:08:36 EST
または、実際に目的の出力がコードで実行したい結果である場合:
$ TZ='EST' awk -F'`' '{print strftime("%F %T %Z",mktime(gensub(/[^0-9]/," ","g",$2),1))}' file
2023-01-18 10:08:36 EST