質問: unixタイムスタンプを人間が読める時間に変換する 最初の列にunixタイムスタンプが含まれているawk/grepを含むテキストファイルを表示したいと思います。表示中に人間が読める時間に変換するにはどうすればよいですか?
回答: ダンが彼の答えで言及している のように、gnu date(1)コマンドには、出力される日付として扱う日付またはタイムスタンプを含む_-d_パラメーターを指定できます。 (ただし、これはposixまたはbsdのdate(1)コマンドでは使用できません。)_@1571806800_は、_time_t_整数を指定するために使用される形式です。フィルターとして機能するbashシェル関数を次に示します。入力から行を読み取り、すべての数字が行で始まるwordがタイムスタンプであると想定し、それを私の好きな形式の1つで人間が読める出力に変換します。_ts2hr() { while read n rest; do if [[ $n =~ ^[0-9][0-9]*$ ]]; then echo "$(date -d @"$n" +"%y-%m-%d %t")" "$rest" else echo "$n" "$rest" fi done } _入力と出力は次のようになります。_ts2hr <<____ 1571806123 first line # a comment? 1571720456 second date's here just a regular sentence. 1571547789 the last line. ____ 2019-10-23 13:48:43 first line # a comment? 2019-10-22 14:00:56 second date's here just a regular sentence. 2019-10-20 14:03:09 the last line. _必要に応じて関数を微調整して、必要な特定の入力および出力フォーマット、および使用可能なツールを処理できます。上記の関数がbashであるのは、主に_=~_演算子によってパターンマッチングが容易になったためです。 bourne shellでこれが必要な場合は、チェックを別の方法でコーディングする必要があります。