Saya ingin mengekstrak data antara ” ” dari file data yang diberi pembatas koma.
Contoh file masukan:
,7/30/2019,7/31/2019,Wed,8/1/2019,FH/FN 30yr & 20yr TBA & Spec ,"10,000",8/13/2019,
o/p yang diharapkan:
,7/30/2019,7/31/2019,Wed,8/1/2019,FH/FN 30yr & 20yr TBA & Spec ,"10000",8/13/2019,
Jawaban yang Diterima:
Dengan asumsi ini adalah CSV yang diformat dengan benar (data contoh terlihat ok dalam hal ini), kita dapat menggunakan csvformat
dari csvkit
untuk sementara mengubah pembatas bidang ke beberapa karakter lain yang tidak ada dalam data, seperti @
, hapus semua koma, dan ubah pembatas bidang kembali ke default lagi:
$ 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,
Outputnya tidak memiliki tanda kutip di sekitar bidang yang kami modifikasi, tetapi itu karena tidak lagi membutuhkannya.
Jelas, “menghapus semua koma” dapat menghapus koma yang sebenarnya tidak ingin kita hapus, jadi kita bisa sedikit lebih selektif dan hanya menghapus koma di kolom ke-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,
Mengapa "sementara Baca" Ini Bekerja Di Terminal, Tapi Tidak Di Skrip Shell?
Jalankan Layanan Systemd Setelah Automount Tapi Setelah Diakses?