毎日約200〜50GBのCSVファイルをエクスポートします。各CSVファイルの最初のフィールドは同様の日付情報です。各CSVファイルには22のフィールドがあります。
/data/exported$ head 0000_processmessages_export_20170509_000144.csv | awk -F ";" '{print $1}'
2017-05-08T21:59:10.263Z
2017-05-08T21:59:10.000Z
2017-05-08T21:59:10.000Z
2017-05-08T18:59:11.000Z
2017-05-08T18:59:11.000Z
2017-05-08T21:00:00.000Z
2017-05-08T21:00:00.000Z
2017-05-08T21:00:00.000Z
2017-05-08T21:00:00.000Z
2017-05-08T21:00:00.000Z
したがって、デフォルトではcsvファイルの各行の末尾に2つのフィールド(Field22とField23)を追加したいと思います。これらのフィールドはYYYYDMMHHやYYYYMMDDなどの形式であり、行の最初のフィールドから抽出する必要があります。だから
Field 23 Field 24
2017050821 20170508
2017050821 20170508
2017050821 20170508
2017050818 20170508
2017050818 20170508
2017050821 20170508
2017050821 20170508
2017050821 20170508
2017050821 20170508
2017050821 20170508
sedおよび/またはbashコマンドを使用してこれをどのように実行できますか?
ベストアンサー1
コメントで述べたように、そのような重複した情報を持つことは愚かなようです。ただし、これを行う必要がある場合は、キャプチャグループと逆参照を使用してください。
sed 's/^\(....\)-\(..\)-\(..\)T\(..\).*/&;\1\2\3\4;\1\2\3/'