もう一つのsed質問

もう一つのsed質問

毎日約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/'

おすすめ記事