Pendekatan paling sederhana:
tr -d '"' <a.csv >b.csv
Gunakan gsub()
fungsi untuk substitusi global
$ awk '{gsub(/\"/,"")};1' input.csv
1,2,3,4,9
1,2,3,6,24
1,2,6,8,28
1,2,4,6,30
Untuk mengirim output ke file baru, gunakan >
operator shell:
awk '{gsub(/\"/,"")};1' input.csv > output.csv
Pendekatan pemisahan ke array Anda juga dapat digunakan, meskipun tidak diperlukan, tetapi Anda dapat menggunakannya seperti itu:
$ awk '{split($0,a,"\""); print a[2]}' input.cvs
1,2,3,4,9
1,2,3,6,24
1,2,6,8,28
1,2,4,6,30
Perhatikan bahwa dalam pertanyaan khusus ini pola umumnya adalah tanda kutip berada di awal dan akhir baris, yang berarti kita juga dapat memperlakukannya sebagai pemisah bidang, di mana bidang 1 adalah nol, bidang 2 adalah 1,2,3,4
, dan bidang 3 juga nol. Dengan demikian, kita dapat melakukan:
awk -F '\"' '{print $2}' input.csv
Dan kita juga bisa mengambil substring dari keseluruhan baris:
awk '{print substr($0,2,length($0)-2)}' quoted.csv
Berbicara tentang pengupasan karakter pertama dan terakhir, ada seluruh posting di stackoverflow tentang itu dengan alat lain seperti sed
dan cangkang POSIX.
Solusi lain dengan sed
:
sed -e 's/"//g' a.csv > b.csv