csvファイルの2番目の列をUnix時刻から読み取れる日付/時刻に変換するBashスクリプト

csvファイルの2番目の列をUnix時刻から読み取れる日付/時刻に変換するBashスクリプト

私の入力ファイルはカンマで区切られた.csvです。 2番目の列をUnix時間から次のように読みやすい日付/時刻形式に変換したいと思います。

before   1502280000
after    8/10/17 08:00:00

またタイトルなので、最初の行を無視したいです。

私はSolaris 10のbashシェルで実行しています。

私のCSVの最初の2行は次のとおりです。

HOST,DATE_TIME_CREATED,USER_ID,EVENT_CLASS
xxxx,1502286180,xxxx,xxxx
xxxx,1502280347,xxxx,xxxx

出力を探す

HOST,DATE_TIME_CREATED,USER_ID,EVENT_CLASS
xxxx,Wed Aug  9 09:43:00 EDT 2017,xxxx,xxxx
xxxx,Wed Aug  9 08:05:47 EDT 2017,xxxx,xxxx

ベストアンサー1

私はYYYY-mm-dd HH:MM:SS時間形式を強くお勧めします。この形式は明確で、語彙と時系列でソートされています。

これを達成するためにPerlを使用することができます。

perl -MPOSIX=strftime -F, -ane '
    $F[1] = strftime("%F %T", localtime $F[1]) if $. > 1; 
    print join ",", @F
' file

おすすめ記事