区切り文字をコンマとして持つデータファイルから「」の間のデータを抽出したい。
サンプル入力ファイル:
,7/30/2019,7/31/2019,Wed,8/1/2019,FH/FN 30yr & 20yr TBA & Spec ,"10,000",8/13/2019,
期待されるo/p:
,7/30/2019,7/31/2019,Wed,8/1/2019,FH/FN 30yr & 20yr TBA & Spec ,"10000",8/13/2019,
承認された回答:
これが適切にフォーマットされた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,