Cara yang jauh lebih sederhana adalah dengan menggunakan tr
$ tr '_' ',' < input.csv | tr -d '"'
1,1,0,0,76
1,1,0,0,77
1,1,0,0,78
Cara kerjanya adalah tr
membutuhkan dua argumen - kumpulan karakter yang akan diganti, dan penggantinya. Dalam hal ini kami hanya memiliki set 1 karakter. Kami mengalihkan input.csv
masukan tr
aliran stdin melalui <
operator shell, dan menyalurkan output yang dihasilkan ke tr -d '"'
untuk menghapus tanda kutip ganda.
Tapi awk
bisa melakukannya juga.
$ cat input.csv
"1_1_0_0_76"
"1_1_0_0_77"
"1_1_0_0_78"
$ awk '{gsub(/_/,",");gsub(/\"/,"")};1' input.csv
1,1,0,0,76
1,1,0,0,77
1,1,0,0,78
Cara kerjanya sedikit berbeda:awk membaca setiap file baris demi baris, setiap skrip sebaris adalah /Pattern match/{ codeblock}/Another pattern/{code block for this pattern}
. Di sini kita tidak memiliki pola, jadi artinya mengeksekusi kode blok untuk setiap baris. gsub()
fungsi digunakan untuk penggantian global dalam satu baris, jadi kami menggunakannya untuk mengganti garis bawah dengan koma, dan tanda kutip ganda dengan string nol (menghapus karakter secara efektif). 1
menggantikan pencocokan pola dengan blok kode yang hilang, yang standarnya hanya untuk mencetak baris; dengan kata lain codeblock dengan gsub()
melakukan tugasnya dan 1
mencetak hasilnya.
Gunakan pengalihan shell (>
) untuk mengirim output ke file baru:
awk '{gsub(/_/,",");gsub(/\"/,"")};1' input.csv > output.csv
Sebagai alternatif, Anda juga bisa menggunakan sed
ini perintah:
$ sed -e 's/_/,/g' -e 's/"//g' input.csv
1,1,0,0,76
1,1,0,0,77
1,1,0,0,78
Perl, "gergaji tentara Swiss" dari pemrosesan teks baris perintah, juga dapat melakukan ini. Sintaksnya (bukan kebetulan) sangat mirip dengan tr
dan sed
contoh:
perl -pe 'tr/_"/,/d' input.csv > result.csv
atau:
perl -pe 's/_/,/g; s/"//g' input.csv > result.csv
Tapi sejujurnya, jika Anda tidak ingin meluangkan waktu untuk mempelajari bahasa pemrograman baru (yang sebenarnya adalah awk, Perl dan sed dan alat lain seperti itu) hanya untuk tugas dasar ini, Anda juga bisa melakukannya di editor teks apa pun yang mendukung pencarian dan penggantian:
-
Buka file CSV di editor teks favorit Anda (seperti gedit, kate, mousepad, dll.; bahkan Notepad atau Wordpad lama di Windows dapat melakukannya).
-
Pilih "Telusuri dan Ganti" dari menu (biasanya ditemukan di bawah "Edit", jika tidak ada menu "Telusuri" yang terpisah).
-
Masukkan
_
ke dalam kotak telusur, dan,
ke dalam kotak pengganti. -
Klik "Ganti Semua".
-
Ulangi dengan
"
di kotak telusur dan tidak ada apa pun di kotak pengganti. -
Simpan file.
Sekarang, jika Anda perlu melakukan ini untuk 100 atau 1000 file, bukan hanya satu, maka mempelajari alat baris perintah baru mulai masuk akal. Dan, tentu saja, setelah Anda mengetahui cara menggunakan Perl atau sed atau apa pun, Anda akan menghemat banyak waktu dan tenaga dengan tugas serupa nanti. Namun untuk pekerjaan satu kali yang tidak perlu Anda lakukan lagi, terkadang alat interaktif dasar seperti editor teks adalah solusi paling sederhana.