SED - garis yang tidak menonjol dalam fail teks
- 1352
- 263
- Clay Weber
Sed, ringkasan untuk "Editor Stream", adalah alat pemprosesan teks yang kuat yang biasa digunakan dalam sistem Linux dan Unix. Ia boleh melakukan pelbagai operasi pada fail teks, termasuk mencari, menggantikan, memasukkan, dan memadam garisan. Satu tugas biasa yang sering dilakukan pengguna dengan SED adalah garis yang tidak menentu dalam fail teks. Dalam artikel ini, kami akan memberikan panduan untuk menguasai SED dan menggunakannya ke talian Uncomment dalam fail teks.
Sebelum kita menyelam ke dalam spesifik menggunakan sed ke garis -garis uncomment, mari kita mula -mula menentukan apa yang kita maksudkan dengan "Uncommenting."Dalam pengaturcaraan, komen adalah garis kod yang diabaikan oleh pengkompil atau penterjemah. Ia digunakan untuk menambah nota, penjelasan, atau maklumat lain kepada kod tanpa menjejaskan fungsinya. Komen biasanya dilambangkan oleh watak khas atau urutan watak, seperti "#" dalam skrip shell, "//" dalam c ++, atau "/ * */" di Jawa.
Baris uncomment dalam fail teks
Untuk tidak mengisahkan garis dalam fail teks bermaksud mengeluarkan aksara komen dan menjadikan garis aktif atau boleh dilaksanakan. Sebagai contoh, pertimbangkan skrip shell berikut:
#!/bin/bash # ini adalah komen # echo "hello, dunia!"1234 | #!/bin/bash # ini adalah komen # echo "hello, dunia!" |
Dalam skrip ini, baris pertama dipanggil a "Shebang" dan memberitahu sistem apa yang akan digunakan oleh jurubahasa untuk melaksanakan skrip. Baris kedua dan ketiga adalah komen yang memberikan maklumat mengenai skrip tetapi tidak dilaksanakan. Baris keempat adalah arahan sebenar yang mencetak "Hello, World!"Ke konsol.
Sekiranya kita mahu mencatatkan baris ketiga dan menjadikannya boleh dilaksanakan, kita akan mengeluarkan watak "#" sebelum perintah "echo":
#!/bin/bash # ini adalah komen echo "hello, dunia!"1234 | #!/bin/bash # ini adalah ulasan "Hello, World!" |
Sekarang kita memahami konsep garis yang tidak menentu, mari kita lihat bagaimana kita boleh menggunakan sed untuk menyelesaikan tugas ini. SED menggunakan ungkapan biasa, atau regex, untuk memadankan corak dalam fail teks dan memohon transformasi kepada mereka. Untuk tidak dapat dilihat, kita perlu mencari watak komen pada permulaan garis dan memadamkannya.
Inilah sintaks asas untuk menggunakan SED ke garis uncomment dalam fail teks:
sed 's/^#//' inputfile> outputfile1 | sed 's/^#//' inputfile> outputfile |
Mari merosakkan arahan ini:
sed
adalah arahan sed sendiris
bermaksud "pengganti," yang merupakan operasi yang ingin kita lakukan/^#/
adalah corak regex yang ingin kita padankan. Watak "^" bermaksud "permulaan garis," dan "#" adalah watak komen yang ingin kita keluarkan.//
adalah rentetan pengganti, yang kosong dalam kes ini. Ini bermakna kami memadamkan watak komen dan tidak menggantinya dengan apa -apa.Inputfile
Adakah nama fail yang ingin kami ubah suai>
adalah pengendali redirect yang menghantar output ke fail baru dan bukannya konsolfail keluaran
adalah nama fail baru yang akan mengandungi versi fail input yang tidak dikurangkan
Berikut adalah contoh bagaimana kita akan menggunakan arahan ini untuk garis uncomment dalam skrip shell:
skrip sed 's/^#//'.sh> tidak dikunjungi.sh1 | skrip sed 's/^#//'.sh> tidak dikunjungi.sh |
Perintah ini akan membaca kandungan Skrip.sh, alihkan "#" watak dari mana -mana baris yang bermula dengan mereka, dan tulis hasilnya ke fail baru yang dipanggil Uncommented.sh.
Perhatikan bahawa perintah ini hanya akan mengeluarkan watak komen dari awal garis. Sekiranya terdapat watak komen di tengah -tengah garis, mereka tidak akan terjejas. Untuk mengalih keluar semua watak komen dalam fail, kami boleh mengubahsuai corak regex untuk memadankan sebarang kejadian "#" dan memadamkannya:
Sed 's/#//' Inputfile> OutputFile1 | Sed 's/#//' Inputfile> OutputFile |
Perintah ini akan membuang semua "#" watak dalam fail, tanpa mengira di mana mereka muncul.
Perlu diingat bahawa perintah sed yang telah kami tunjukkan setakat ini akan mengubah suai fail input secara langsung. Sekiranya anda ingin membuat fail baru dengan versi fail input yang tidak dikunjungi, anda boleh menggunakannya "> OutputFile" sintaks, seperti yang telah kita lakukan dalam contoh di atas.
Sekiranya anda ingin mengubah suai fail input secara langsung, anda boleh menggunakan "-I" pilihan, yang bermaksud "di tempat":
Sed -I 's/^#//' Inputfile1 | Sed -I 's/^#//' Inputfile |
Perintah ini akan membuang "#" watak dari fail input itu sendiri, tanpa membuat fail baru.
Pilihan lain yang berguna dalam SED ialah "-E" pilihan, yang membolehkan anda menentukan pelbagai arahan sed dalam satu baris arahan. Ini boleh berguna jika anda ingin melakukan pelbagai transformasi pada fail:
sed -e 's/^#//' -e 's/^ *//' inputfile> outputfile1 | sed -e 's/^#//' -e 's/^ *//' inputfile> outputfile |
Perintah ini terlebih dahulu akan mengeluarkan "#"Watak dari mana -mana baris yang bermula dengan mereka, dan kemudian keluarkan mana -mana ruang yang muncul pada permulaan setiap baris.
Kesimpulan
Kesimpulannya, menguasai SED adalah kemahiran penting bagi mana -mana pengguna Linux atau Unix yang bekerja dengan fail teks. Menggunakan SED ke talian Uncomment dalam fail adalah tugas biasa yang dapat dicapai dengan mudah dengan "S/^#//" perintah. Dengan menggabungkan arahan ini dengan ciri -ciri SED yang lain, anda boleh melakukan operasi pemprosesan teks yang kuat pada fail anda dan mengautomasikan banyak tugas yang membosankan.
- « Pembolehubah Khas di ZSH
- Menggunakan AWK, BC dan Expr untuk melakukan pengiraan matematik di Bash »