テキストファイルに保存されている新起源の時間形式を人間に優しい形式に変換する

テキストファイルに保存されている新起源の時間形式を人間に優しい形式に変換する

日付がエポック時間形式で保存されるファイル名simcloud-target.txtがあり、すべての日付を人間に優しい形式に変換してリストとして印刷したいです(下記のような出力なので、エポックではありませんが必要です)。によってhh:mm:00)

sec504@slingshot:~$ cat simcloud-targets.txt
1679450009
1679450014
1679450018
1679450018
1679450022
1679450023
1679450024
1679450024
1679450033
1679450043
1679450046
1679450060
1679450065
1679450071
sec504@slingshot:~$ 

ベストアンサー1

ファイルのUnixタイムスタンプの前にプレフィックスが付いている場合は、@GNUをdate使用してそれを読み取ることができます-f。次の@ように、各タイムスタンプにプレフィックスを追加できますsed

sed 's/^/@/' file

...そして、次のようにGNUから出力を使用できますdate

date -f <(sed 's/^/@/' file)

問題の日付スタンプとローカルタイムゾーンを考慮すると、次のようになります。

Wed Mar 22 02:53:29 CET 2023
Wed Mar 22 02:53:34 CET 2023
Wed Mar 22 02:53:38 CET 2023
Wed Mar 22 02:53:38 CET 2023
Wed Mar 22 02:53:42 CET 2023
Wed Mar 22 02:53:43 CET 2023
Wed Mar 22 02:53:44 CET 2023
Wed Mar 22 02:53:44 CET 2023
Wed Mar 22 02:53:53 CET 2023
Wed Mar 22 02:54:03 CET 2023
Wed Mar 22 02:54:06 CET 2023
Wed Mar 22 02:54:20 CET 2023
Wed Mar 22 02:54:25 CET 2023
Wed Mar 22 02:54:31 CET 2023

その後、通常どおりに希望の出力形式を設定できますdate。ここでは、プロセス置換の代わりに通常のパイプを使用する方法も示します。

$ sed 's/^/@/' file | date -f - +'%F %T'
2023-03-22 02:53:29
2023-03-22 02:53:34
2023-03-22 02:53:38
2023-03-22 02:53:38
2023-03-22 02:53:42
2023-03-22 02:53:43
2023-03-22 02:53:44
2023-03-22 02:53:44
2023-03-22 02:53:53
2023-03-22 02:54:03
2023-03-22 02:54:06
2023-03-22 02:54:20
2023-03-22 02:54:25
2023-03-22 02:54:31

strftimeman 3 strftime使用できるプレースホルダの形式については、ライブラリ関数()のマニュアルを参照してください。

おすすめ記事