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
含まれており、外部コマンドを実行して出力を変数に保存します。date
getline
date
out
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