SED - Baris tanpa komentar dalam file teks
- 3393
- 642
- Simon Cormier
Sed, kependekan dari “Stream Editor”, adalah alat pemrosesan teks yang kuat yang biasa digunakan dalam sistem Linux dan UNIX. Ini dapat melakukan berbagai operasi pada file teks, termasuk mencari, mengganti, memasukkan, dan menghapus baris. Satu tugas umum yang sering dibutuhkan pengguna dengan SED adalah garis yang tidak berkomentar dalam file teks. Di artikel ini, kami akan memberikan panduan untuk menguasai SED dan menggunakannya untuk tidak memberikan baris dalam file teks.
Sebelum kita menyelami secara spesifik menggunakan Sed ke garis uncromment, mari kita tentukan apa yang kita maksud dengan “tidak berkomentari.Dalam pemrograman, komentar adalah baris kode yang diabaikan oleh kompiler atau penerjemah. Ini digunakan untuk menambahkan catatan, penjelasan, atau informasi lain ke kode tanpa mempengaruhi fungsinya. Komentar biasanya dilambangkan dengan karakter khusus atau urutan karakter, seperti "#" dalam skrip shell, "//" di C ++, atau “/ * */” di Java.
Baris uncomment dalam file teks
Untuk membatalkan komentar baris dalam file teks berarti menghapus karakter komentar dan membuat garis aktif atau dapat dieksekusi. Misalnya, pertimbangkan skrip shell berikut:
#!/bin/bash # Ini adalah komentar # echo "halo, dunia!"1234 | #!/bin/bash # Ini adalah komentar # echo "halo, dunia!" |
Dalam skrip ini, baris pertama disebut a "peristiwa" dan memberi tahu sistem apa interpreter untuk digunakan untuk menjalankan skrip. Baris kedua dan ketiga adalah komentar yang memberikan informasi tentang skrip tetapi tidak dieksekusi. Baris keempat adalah perintah aktual yang mencetak “halo, dunia!”Ke konsol.
Jika kami ingin melepaskan baris ketiga dan membuatnya dapat dieksekusi, kami akan menghapus karakter "#" sebelum perintah "Echo":
#!/bin/bash # Ini adalah komentar echo "Halo, dunia!"1234 | #!/bin/bash # Ini adalah commentecho "Halo, dunia!" |
Sekarang kita memahami konsep garis yang tidak berkomentar, mari kita lihat bagaimana kita dapat menggunakan SED untuk menyelesaikan tugas ini. SED menggunakan ekspresi reguler, atau regex, untuk mencocokkan pola dalam file teks dan menerapkan transformasi kepada mereka. Untuk melepaskan baris, kita perlu mencari karakter komentar di awal baris dan menghapusnya.
Berikut sintaks dasar untuk menggunakan Sed to Uncomment Lines dalam file teks:
Sed 'S/^#//' InputFile> OutputFile1 | Sed 'S/^#//' InputFile> OutputFile |
Mari kita hancurkan perintah ini:
sed
Apakah perintah sed itu sendiriS
singkatan dari "pengganti," yang merupakan operasi yang ingin kami lakukan/^#/
adalah pola regex yang ingin kami cocokkan. Karakter "^" berarti "awal dari baris," dan "#" adalah karakter komentar yang ingin kami hapus.//
adalah string pengganti, yang kosong dalam kasus ini. Ini berarti kami menghapus karakter komentar dan tidak menggantinya dengan apa pun.Inputfile
adalah nama file yang ingin kami ubah>
adalah operator pengalihan yang mengirimkan output ke file baru alih -alih konsolberkas keluaran
adalah nama file baru yang akan berisi versi file input yang tidak dikomentasikan
Berikut adalah contoh bagaimana kami akan menggunakan perintah ini untuk tidak menggunakan baris dalam skrip shell:
skrip sed 's/^#//'.SH> tidak berkomentar.SH1 | skrip sed 's/^#//'.SH> tidak berkomentar.SH |
Perintah ini akan membaca isi naskah.SH, Hapus "#" Karakter dari setiap baris yang dimulai dengan mereka, dan tulis hasilnya ke file baru yang disebut Uncommented.SH.
Perhatikan bahwa perintah ini hanya akan menghapus karakter komentar dari awal baris. Jika ada karakter komentar di tengah baris, mereka tidak akan terpengaruh. Untuk menghapus semua karakter komentar dalam file, kami dapat memodifikasi pola regex agar sesuai dengan kemunculan "#" dan menghapusnya:
Sed 'S/#//' InputFile> OutputFile1 | Sed 'S/#//' InputFile> OutputFile |
Perintah ini akan menghapus semua "#" karakter dalam file, di mana pun mereka muncul.
Perlu dicatat bahwa perintah SED yang telah kami tunjukkan sejauh ini akan memodifikasi file input secara langsung. Jika Anda ingin membuat file baru dengan versi file input yang tidak dikomentasikan, Anda dapat menggunakan “> OutputFile” sintaks, seperti yang telah kami lakukan dalam contoh di atas.
Jika Anda ingin memodifikasi file input secara langsung, Anda dapat menggunakan "-Saya" opsi, yang merupakan singkatan dari "di tempat":
Sed -i 'S/^#//' InputFile1 | Sed -i 'S/^#//' InputFile |
Perintah ini akan menghapus "#" karakter dari file input itu sendiri, tanpa membuat file baru.
Pilihan lain yang berguna di SER adalah "-E" Opsi, yang memungkinkan Anda untuk menentukan beberapa perintah SED dalam satu baris perintah tunggal. Ini bisa berguna jika Anda ingin melakukan beberapa transformasi pada file:
sed -e 's/^#//' -e 's/^ *//' inputFile> outputFile1 | sed -e 's/^#//' -e 's/^ *//' inputFile> outputFile |
Perintah ini pertama -tama akan menghapus “#"Karakter dari setiap baris yang dimulai dengan mereka, dan kemudian hapus spasi apa pun yang muncul di awal setiap baris.
Kesimpulan
Kesimpulannya, menguasai SED adalah keterampilan penting bagi setiap pengguna Linux atau UNIX yang bekerja dengan file teks. Menggunakan Sed to Uncomment Lines dalam file adalah tugas umum yang dapat diselesaikan dengan mudah dengan “S/^#//” memerintah. Dengan menggabungkan perintah ini dengan fitur SED lainnya, Anda dapat melakukan operasi pemrosesan teks yang kuat pada file Anda dan mengotomatiskan banyak tugas yang membosankan.
- « Variabel khusus di zsh
- Menggunakan AWK, BC dan Expr untuk melakukan perhitungan matematika dalam bash »