Pengaturcaraan BASH

Mengeluarkan Karakter dari Rentetan dalam Bash

Mengeluarkan Karakter dari Rentetan dalam Bash

Kadang kala, anda mungkin perlu membuang watak dari rentetan. Apa pun alasannya, Linux menyediakan anda pelbagai alat terpasang dan berguna yang membolehkan anda mengeluarkan watak dari rentetan di Bash. Artikel ini menunjukkan kepada anda cara menggunakan alat tersebut untuk membuang watak dari rentetan.

Artikel tersebut merangkumi cara melakukan perkara berikut:

Perintah yang ditunjukkan dalam artikel ini dilakukan di Ubuntu 20.04 Fossa Fokus. Perintah yang sama juga dapat dilakukan pada distribusi Linux lain yang mempunyai alat di atas yang tersedia. Kami akan menggunakan aplikasi Terminal lalai untuk menjalankan perintah. Anda boleh mengakses aplikasi Terminal menggunakan pintasan papan kekunci Ctrl + Alt + T.

Buang Karakter dari Rentetan Menggunakan sed

Sed adalah utiliti yang hebat dan berguna untuk mengedit aliran teks. Ini adalah penyunting teks tidak interaktif yang membolehkan anda melakukan manipulasi teks asas pada aliran input. Anda juga boleh menggunakan sed untuk menghilangkan watak yang tidak diingini dari rentetan.

Untuk tujuan demonstrasi, kami akan menggunakan rentetan sampel dan kemudian memasukkannya ke perintah sed.

Buang Karakter Tertentu dari Rentetan

Dengan menggunakan sed, anda boleh membuang watak tertentu dari rentetan. Contohnya, untuk mengeluarkan "h" dari rentetan "hello, apa khabar?"Perintahnya adalah:

$ echo "halo, apa khabar?"| sed 's / h //'

Ini hanya akan menghilangkan kejadian pertama 'h' dalam rentetan.

Untuk membuang semua kejadian 'h' dari rentetan, gunakan arahan berikut:

$ echo "halo, apa khabar?"| sed 's / h // g'

Di mana g bermaksud global. Ia akan membuang semua kejadian 'h' dalam rentetan.

Keluarkan Watak Pertama dari Rentetan

Untuk mengeluarkan watak pertama dari rentetan "hello, apa khabar?" arahannya adalah:

$ echo "halo, apa khabar?"| sed / s.// 'fail

Di mana (.) sepadan dengan watak tunggal dan (^) sepadan dengan watak apa pun di awal rentetan.

Buang Watak Terakhir dari Rentetan

Untuk mengeluarkan watak terakhir dari rentetan “hello, apa khabar?" arahannya adalah:

$ echo "halo, apa khabar?"| sed /.$ // '

Di mana (.) sepadan dengan aksara tunggal dan ($) sepadan dengan watak apa pun di hujung rentetan.

Buang Karakter Pertama dan Terakhir dari Rentetan

Untuk mengeluarkan watak pertama dan terakhir dari rentetan “hello, apa khabar?" arahannya adalah:

$ echo "halo, apa khabar?"| sed / s.//; s /.$ // '

Buang Karakter dari Rentetan Menggunakan awk

Awk adalah bahasa skrip kuat yang digunakan untuk pemadanan corak, bersama dengan pemprosesan teks. Awk membolehkan anda menyaring dan mengubah teks dengan pelbagai cara. Anda juga boleh menggunakan awk untuk membuang watak dari rentetan.

Untuk tujuan demonstrasi, kami akan menggunakan rentetan sampel dan kemudian memasukkannya ke perintah awk.

Buang Perwatakan Pertama Dari Rentetan

Untuk mengeluarkan watak pertama dari rentetan "hello, apa khabar?" arahannya adalah:

$ echo "halo, apa khabar?"| awk 'print substr ($ 0, 2)'

Di mana ($ 0) adalah keseluruhan rentetan sasaran dan (2) adalah kedudukan permulaan watak. Perintah di atas membuang watak pertama, 'h,' nombor watak '1,' dan mengembalikan rentetan sasaran bermula dengan watak kedua, 'e.'

Keluarkan Dua Watak Pertama dari Rentetan

Anda juga boleh membuang sebilangan watak dari awal rentetan. Contohnya, untuk membuang dua watak pertama dari rentetan “hello, apa khabar?" arahannya adalah:

$ echo "halo, apa khabar?"| awk 'print substr ($ 0, 3)'

Perintah di atas akan membuang dua watak pertama, 'dia,' atau nombor watak '1 dan 2,' dan mengembalikan rentetan sasaran yang bermula dengan nombor watak '3,' atau 'l.'

Buang Watak Terakhir dari Rentetan

Untuk membuang watak terakhir dari "hello, apa khabar?" arahannya adalah:

$ echo "halo, apa khabar?"| awk 'substrat cetak ($ ​​0, 1, panjang ($ 0) -1)'

Di mana panjang ($ 0) -1 bermaksud menolak '1'dari keseluruhan panjang watak.

Perintah di atas akan mencetak rentetan bermula dengan nombor watak '1' sehingga panjang ($ 0) -1 untuk menanggalkan watak terakhir.

Disana ada '19aksara (termasuk ruang) dalam rentetan di atas. Perintah akan berfungsi dengan mencetak semua watak, bermula dengan watak '1'dan hingga watak'18,'sambil membuang watak terakhir'19.'

Buang Dua Watak Terakhir dari Rentetan

Untuk membuang dua watak terakhir dari "hello, apa khabar?"Perintahnya adalah:

$ echo "halo, apa khabar?"| awk 'substrat cetak ($ ​​0, 1, panjang ($ 0) -2)'

Di mana panjang ($ 0) -2 bermaksud menolak '2'dari keseluruhan panjang watak.

Perintah di atas akan mencetak rentetan, dimulai dengan nombor watak '1'dan hingga nombor watak'panjang ($ 0) -2,'untuk membuang dua watak terakhir dalam rentetan.

Buang Karakter Pertama dan Terakhir dari Rentetan

Untuk mengeluarkan watak pertama dan terakhir dari rentetan “hello, apa khabar?" arahannya adalah:

$ echo "halo, apa khabar?"| awk 'substrat cetak ($ ​​0, 2, panjang ($ 0) - 2)'

Di mana panjang ($ 0) -2 bermaksud menolak '2'dari keseluruhan panjang watak.

Perintah di atas akan mencetak rentetan, dimulai dengan nombor watak '2'hingga nombor watak'panjang ($ 0) -2,'untuk membuang watak pertama dan terakhir.

Buang Karakter dari Rentetan Menggunakan potongan

Cut adalah alat baris perintah yang biasa digunakan untuk mengekstrak sebahagian teks dari rentetan atau fail dan mencetak hasilnya ke output standard. Anda juga boleh menggunakan perintah ini untuk mengeluarkan watak dari rentetan.

Untuk tujuan demonstrasi, kami akan menggunakan rentetan sampel dan kemudian memasukkannya ke perintah potong.

Keluarkan Watak Pertama dari Rentetan

Untuk mengeluarkan watak pertama dari rentetan, “hello, apa khabar?" arahannya adalah:

$ echo "halo, apa khabar?"| potong -c 2-

Perintah ini akan mencetak rentetan, dimulai dengan watak kedua, sambil membuang watak pertama.

Keluarkan Empat Watak Pertama dari Rentetan

Untuk mengeluarkan empat watak pertama dari rentetan "hello, apa khabar?" arahannya adalah:

$ echo "halo, apa khabar?"| potong -c 5-

Perintah ini akan mencetak rentetan, bermula dari aksara kelima, sambil membuang empat watak pertama.

Mencetak Rentetan Antara Watak ke-2 dan ke-5

Untuk mencetak rentetan "hello, apa khabar?" antara watak kedua dan kelima, arahannya adalah:

$ echo "halo, apa khabar?"| potong -c 2-5

Perintah ini akan mencetak rentetan, bermula dari watak kedua dan hingga watak kelima, sambil membuang aksara awal dan akhir yang tersisa.

Buang Watak Terakhir dari Rentetan

Untuk mengeluarkan watak terakhir dari rentetan “hello, apa khabar?" menggunakan memotong perintah dengan rev, seperti berikut:

$ echo "halo, apa khabar?"| rev | cut -c2- | rev

Perintah ini berfungsi dengan membalikkan rentetan terlebih dahulu, kemudian memotong watak pertama, dan akhirnya membalikkannya semula untuk memberi anda output yang diinginkan.

Keluarkan Empat Watak Terakhir dari Rentetan

Untuk membuang empat watak terakhir dari baris “hello, apa khabar?" arahannya adalah:

$ echo "halo, apa khabar?"| rev | cut -c5- | rev

Perintah ini berfungsi dengan membalikkan rentetan terlebih dahulu, kemudian memotong empat aksara pertama, dan kemudian membalikkannya semula untuk memberi anda output yang diinginkan.

Buang Watak Pertama dan Terakhir dari Rentetan

Untuk mengeluarkan watak pertama dan terakhir dari rentetan “hello, apa khabar?" menggunakan memotong perintah dengan rev, seperti berikut:

$ echo "hai dunia!"| potong -c2- | rev | potong -c2- | rev

Perintah ini berfungsi dengan memotong watak pertama, kemudian membalikkan rentetan dan memotong watak pertama, dan kemudian membalikkannya lagi untuk memberi anda output yang diinginkan.

Buang Karakter dari Rentetan Menggunakan tr

Perintah tr (pendek untuk terjemahan) digunakan untuk menterjemahkan, memerah, dan menghapus watak dari rentetan. Anda juga boleh menggunakan tr untuk membuang watak dari rentetan.

Untuk tujuan demonstrasi, kami akan menggunakan rentetan sampel dan kemudian memasukkannya ke perintah tr.

Buang Semua Kejadian Perwatakan

Dengan menggunakan perintah tr, anda boleh membuang semua kejadian huruf kecil atau huruf besar dari rentetan anda. Sebagai contoh, untuk membuang semua kejadian huruf kecil 'h' dari rentetan, perintahnya adalah:

$ echo "Helo, apa khabar?"| tr-d h

Begitu juga, untuk membuang semua kejadian huruf besar 'H' dari rentetan, perintahnya adalah:

$ echo "Helo, apa khabar?"| tr -d H

Anda juga boleh menggunakan urutan yang ditafsirkan untuk membuang huruf kecil atau huruf besar:

$ echo "Helo, apa khabar?"| tr -d [: atas:]

$ echo "Halo, apa khabar?"| tr -d [: lebih rendah:]

Buang Semua Kejadian Huruf Kecil dan Huruf Besar

Anda juga boleh membuang semua kejadian huruf kecil dan huruf besar dari rentetan. Sebagai contoh, perintah berikut akan menghapus semua kejadian watak 'h,' baik huruf kecil dan huruf besar.

$ echo "Helo, apa khabar?"| tr -d 'hH'

Buang Semua Kejadian Karakter dalam Julat Tertentu

Untuk membuang semua kejadian watak dari rentetan dalam julat tertentu 'd-h,' perintahnya adalah:

$ echo "halo, apa khabar?"| tr -d 'd-h'

Perintah ini akan membuang semua watak dalam julat 'd-h' (d, e, f, g, h) dalam rentetan.

Kesimpulannya

Di Linux, akan selalu ada lebih dari satu cara untuk menyelesaikan pekerjaan yang sederhana. Perkara yang sama berlaku dengan membuang watak dari rentetan. Artikel ini menunjukkan kepada anda empat cara yang berbeza untuk melakukannya, bersama dengan beberapa contoh untuk membuang watak yang tidak diingini dari rentetan. Memutuskan alat mana yang akan digunakan semuanya bergantung pada pilihan anda dan, yang lebih penting, dari apa yang anda ingin capai.

Cara Menggunakan Mesin Cheat GameConqueror di Linux
Artikel ini merangkumi panduan mengenai penggunaan mesin cheat GameConqueror di Linux. Ramai pengguna yang bermain permainan di Windows sering menggun...
Emulator Konsol Permainan Terbaik untuk Linux
Artikel ini akan menyenaraikan perisian emulasi konsol permainan popular yang tersedia untuk Linux. Emulation adalah lapisan keserasian perisian yang ...
Distro Linux Terbaik untuk Permainan pada tahun 2021
Sistem operasi Linux telah jauh dari tampilan asal, ringkas dan berasaskan pelayan. OS ini telah berkembang pesat dalam beberapa tahun kebelakangan in...