Saya ingin menambahkan kolom (tempat ke-2) dalam .csv
file dan saya ingin nilai-nilai kolom itu menjadi string dan dikutip;
Perintah berikut menambahkan kolom tetapi tanpa tanda kutip:
awk -F"," 'BEGIN { OFS = "," } {$2="2.4.0"; print}' test.csv > output.csv
Pendekatan berikut memang menggabungkan tanda kutip, tetapi karena alasan tertentu ia menghilangkan titik terakhir .
dari nilai
awk -F"," 'BEGIN { OFS = "," } {$2="\""2.4.0"\""; print}' test.csv > output.csv
jadi nilai saya akhirnya menjadi "2,40".
Bagaimana saya harus melakukan ini?
Jawaban:
Tampaknya Anda salah mengutip. Anda perlu melakukan seperti di bawah ini
Ini dijelaskan di halaman manual GNU awk - 3.2 Escape Sequences
Sejauh alasan saya bisa memahami alasan perilaku itu,
awk
tampaknya telah ditafsirkan2.4.0
sebagai kata numerik dengan kutipan tambahan dari OP Anda dan memutuskan untuk kehilangan presisi setelah titik pertama.yaitu
menjadi adil
yang
awk
tidak lagi dipahami sebagai string. Anda dapat mereproduksi perilaku ini hanya dengan melakukanyang kebetulan merupakan hasil ketika Anda melakukannya
sumber
{ print 2.4.0 }
atau{ print 2.4.0 + 0 }
, yaitu sebagai konstituen non-string. Saya sudah mencoba untuk mencari dokumen yang relevan juga, tetapi tidak bisaawk -v q='"' '... print q "2.4.0" q ...