列のタイムスタンプを日付に変換するには?

列のタイムスタンプを日付に変換するには?

次の内容を含むファイルがあります。

1415602803,LOGIN SUCCESS,AUTH,user2,192.168.203.63,10.146.124.73,59996,22
1415602807,LOGIN SUCCESS,AUTH,user1,172.24.31.10,172.32.1.1,48191,22
1415602811,LOGIN FAILED,AUTH,root,172.24.166.153,10.146.124.73,52506,22
1415602815,LOGIN FAILED,AUTH,user3,192.168.123.55,10.146.32.99,55750,22

タイムスタンプを次の形式に日付に変換したいと思います。

2014-11-10 02:00:03,LOGIN SUCCESS,AUTH,user2,192.168.203.63,10.146.124.73,59996,22
2014-11-10 02:00:07,LOGIN SUCCESS,AUTH,user1,172.24.31.10,172.32.1.1,48191,22
2014-11-10 02:00:11,LOGIN FAILED,AUTH,root,172.24.166.153,10.146.124.73,52506,22
2014-11-10 02:00:15,LOGIN FAILED,AUTH,user3,192.168.123.55,10.146.32.99,55750,22

どうすればいいですか?

私はこれがうまくいくことを知っています:(perl -pe 's/(\d+)/localtime($1)/e'を通してこの問題)しかし、出力形式はMon Nov 10 02:00:03 2014

このコマンドはタイムスタンプを私が望む出力に変換できることを知っていますが、すべての引用符と項目のために動作させることdate -d@1415602803 +"%F %H:%M:%S"はできません。awksystem("cmd")

ベストアンサー1

ここで何かを見つけました:Stackoverflow - コマンドラインからUnixtimeから変換

これを思い出しました:

awk -F"," '{OFS=","; $1=strftime("%Y-%m-%d %H:%M:%S", $1); print $0}' file
  • -F","フィールド区切り記号を使用してください,
  • OFS=",";このように、出力フィールドも次のように,区別されます。
  • $1=strftime("%Y-%m-%d %H:%M:%S", $1);最初のフィールドの値を指定$1された形式に変更し、
  • print $0;行全体を印刷します。

おすすめ記事