awkを使用してcsvで日付順序をフォーマットする

awkを使用してcsvで日付順序をフォーマットする

次のデータ構造を含むcsvファイルがあります:[MM / DD / YYYY]

1111,2222,3333,4444,5555,6666,7777,11/27/2017 18:58:48,11/27/2017 19:07:57

私の目標は、日付形式を[YYYY / MM / DD]に変更することです。

1111,2222,3333,4444,5555,6666,7777,2017/11/27 18:58:48,2017/11/27 19:07:57

これを達成するためにawkを使用しようとしていますが、それを実行できる他のツールも使用できます。

ベストアンサー1

Awk解決策:

awk -F',' 'function reformat_date(c){     # `c` - column value as an argument
               y = substr(c, 7, 4);       # extract `year` value
               sub(/\/[0-9]{4}/, "", c);  # remove `year` value
               return y"/"c               # return rearranged `YYYY/MM/DD` value
           }
           { $8 = reformat_date($8); $9 = reformat_date($9) }1' OFS=',' file.csv

出力例:

1111,2222,3333,4444,5555,6666,7777,2017/11/27 18:58:48,2017/11/27 19:07:57

おすすめ記事