GNU/Linux >> Belajar Linux >  >> Linux

Ganti Data Antara Kutipan Dalam File?

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,

Linux
  1. Protokol transfer file:FTP vs SFTP

  2. Temukan dan ganti teks dalam file di antara rentang baris menggunakan sed

  3. Menggunakan sed untuk mengganti antara pola tertentu

  1. Ganti Baris Baru Dengan Nul?

  2. Hapus Koma Antara Kutipan Hanya Dalam File Yang Dibatasi Koma?

  3. Buat Data Pembacaan Teks Dari File?

  1. Bagaimana Cara Mengganti String Dalam File?

  2. Perbedaan Antara .exrc Dan .vimrc?

  3. Menyembunyikan Data Dalam Sistem File?