CSVの日付変換に助けが必要です。デフォルトでは、列を変換して新しいファイルとして保存できますが、元のCSVには保存できません。
私のCSVの最初の列DD/MM/YYYY HH:MM
に変換したい日付形式のCSVがあります。YYYY-MM-DD HH:MM
私のCSVファイルには次の内容があります。
29/01/2018 14:07,payable,37159871,,30521316
29/01/2018 14:07,payable,37159872,,30521316
29/01/2018 14:07,payable,37159870,,30521316
29/01/2018 14:07,payable,37159869,,30521316
29/01/2018 14:07,payable,37159868,,30521316
私は次のようなものが欲しい:
2018-01-29 14:07,payable,37159871,,30521316
2018-01-29 14:07,payable,37159872,,30521316
2018-01-29 14:07,payable,37159870,,30521316
2018-01-29 14:07,payable,37159869,,30521316
2018-01-29 14:07,payable,37159868,,30521316
私ができること:
gawk -F, '{split($1, a, "/| "); print a[3]"-"a[2]"-"a[1]" "a[4]}' /path/to/file.csv > test_file
ここでCSVファイルに再保存する方法を知りたいです。
ベストアンサー1
この例の編集は非常に簡単なので、Awkを使用する必要はありません。
GNU Sedの使用は次のように簡単です。
sed -rie 's_^(..)/(..)/(....)_\3-\2-\1_' file.csv
BSD Sed の場合は、以下を使用します。
sed -Ei '' -e 's_^(..)/(..)/(....)_\3-\2-\1_' file.csv
POSIXツールだけを使用すると、少し見苦しいですが、悪くはありません。
printf '%s\n' '%s/^\(..\)\/\(..\)\/\(....\)/\3-\2-\1/' x | ex file.csv
編集:実際に詳しく見てくださいPOSIX仕様ex
Sed と同様に、(ほぼ)すべての区切り文字が使用可能であることを示します。だから:
printf '%s\n' '%s_^\(..\)/\(..\)/\(....\)_\3-\2-\1_' x | ex file.csv
少しより良いもの。