ファイルの日付形式の変更[重複]

ファイルの日付形式の変更[重複]

Sample.txtという名前の次のファイルがあります。

[Sat Sep 10 06:31:41 2016]!Node2!Node1!Node3
[Sun Sep 11 23:31:41 2016]!Node2!Node1!Node3

このように見えるように修正する必要があります。日付形式をこの形式に変更する必要があります。

  2016-09-10 06:31:41!ER_DEV!Node2!Node1!Node3
  2016-09-11 23:31:41!ER_DEV!Node2!Node1!Node3

ベストアンサー1

awk以下の助けを借りて使用されますdate

awk -F '[[\\]]' '{cmd="date -d \""$2"\" \"+%F %T\""; cmd | getline out; print out $3}'
  • -F '[[\\]]'フィールド区切り文字を[または]に設定すると、日付はフィールド2にあり、残りはフィールド3にあります。

  • 変数には、2番目のフィールドを目的の形式に変換するコマンドがcmd含まれており、外部コマンドを実行して出力を変数に保存します。dategetlinedateout

  • out最後に、変数の内容と3番目のフィールドを印刷します。

例:

% cat file.txt
[Sat Sep 10 06:31:41 2016]!Node2!Node1!Node3
[Sun Sep 11 23:31:41 2016]!Node2!Node1!Node3

% awk -F '[[\\]]' '{cmd="date -d \""$2"\" \"+%F %T\""; cmd | getline out; print out $3}' file.txt
2016-09-10 06:31:41!Node2!Node1!Node3
2016-09-11 23:31:41!Node2!Node1!Node3

おすすめ記事