ファイルの引用符間のデータを置き換える

ファイルの引用符間のデータを置き換える

区切り文字がコンマであるデータファイルから「」の間のデータを抽出したいと思います。

入力ファイルの例:

,7/30/2019,7/31/2019,Wed,8/1/2019,FH/FN 30yr & 20yr TBA & Spec ,"10,000",8/13/2019,

予想出力:

,7/30/2019,7/31/2019,Wed,8/1/2019,FH/FN 30yr & 20yr TBA & Spec ,"10000",8/13/2019,

ベストアンサー1

これが正しい形式のCSVであると仮定すると(例データはこの点で問題ありません)、次のようcsvformatに使用できます。csvkitフィールド区切り文字をデータにない他の文字に一時的に変更します。たとえば、@すべてのカンマを削除してから、フィールド区切り文字をデフォルト値に戻します。

$ csvformat -D '@' file.csv | tr -d , | csvformat -d '@'
,7/30/2019,7/31/2019,Wed,8/1/2019,FH/FN 30yr & 20yr TBA & Spec ,10000,8/13/2019,

出力には、変更したフィールドの周りに引用符はありませんが、もはや必要ないからです。

明らかに、「すべてのカンマを削除する」は実際に削除したくないカンマを削除することができるため、7番目のフィールドのカンマのみを選択的に削除できます。

$ csvformat -D '@' file.csv | awk -F '@' 'BEGIN { OFS=FS } { gsub(",", "", $7); print }' | csvformat -d '@'
,7/30/2019,7/31/2019,Wed,8/1/2019,FH/FN 30yr & 20yr TBA & Spec ,10000,8/13/2019,

おすすめ記事