区切り文字がコンマであるデータファイルから「」の間のデータを抽出したいと思います。
入力ファイルの例:
,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,