Belajar Linux

Mengganti Rentetan dalam Bash

Mengganti Rentetan dalam Bash

Bash adalah proses perintah yang sesuai dengan shell UNIX yang tugas utamanya adalah memanipulasi rentetan yang dilakukan di persekitaran shell. Pengaturcara kadang-kadang diminta untuk mengerjakan fail yang berbeza. Mereka boleh menambah, menghapus, dan mengganti bahagian atau keseluruhan fail agar sesuai dengan karya mereka. Ini memerlukan pengetahuan untuk menggantikan tali dalam bash. Penyimpanan data boleh bersifat sementara atau kekal, bergantung pada sifat data. Rentetan fail sangat mustahak semasa mengganti kandungan fail.

Mengganti Rentetan dalam Bash

sed sangat penting dan berguna untuk mengganti rentetan dalam fail dengan skrip bash. Editor tali boleh digunakan dengan cara yang berbeza untuk menggantikan kandungan fail dalam bash. Editor rentetan suara tetapi ganti adalah awk yang dapat dimainkan ketika mengganti nilai rentetan dari fail menggunakan bash. Artikel ini akan menunjukkan dengan contoh bagaimana kandungan fail dapat diganti dalam bash. Perhatikan bahawa pengetahuan dalam corak regex juga dapat sangat berharga ketika mengganti string dalam bash.

Manipulasi Tali Bash

Semasa melakukan penggantian kecil atau sederhana, pemakaian tidak diperlukan. Bash boleh melakukan manipulasi.

Sebagai contoh:
Semasa menggantikan fosslinux.gif dengan .mp4, sed tidak diperlukan.
Untuk menjalankan proses menggunakan bash, gunakan teks berkod di bawah:

# / bin / bash file_name = "fosslinux.gif "new_extension =" mp4 "# Ganti .gif dengan .mp4 dihasilkan_file_name = $ file_name /.gif /.$ new_extension gema dihasilkan_file_name

Mengganti String menggunakan sed

sed boleh disebut sebagai penyunting aliran. Sed boleh menggantikan rentetan dalam fail. Mari kita lihat contoh fail yang disebut singleboardbytes.txt yang mempunyai maklumat berikut:
Foss Linux adalah laman pembelajaran yang bagus untuk mana-mana pengguna Linux. Lihat artikel yang diterbitkan oleh Foss Linux di laman web mereka.

Sekarang dari fail kami, kami perlu mengganti perkataan “tapak"Dengan"laman web"Dan ganti nama fail menjadi fosslinux.txt.

Memahami sintaksis sed

nama fail sed -i / search_string / Replian_string / ' sed - adalah perintah yang digunakan dalam pelaksanaan sintaks di atas '-i'- digunakan dalam pengubahsuaian isi dalam file asli dengan bantuan string pengganti setiap kali nilai pencarian ada di dalam file. 's'- ini adalah arahan pengganti'carian_string'- ini mewakili nilai rentetan yang akan dicari untuk diganti dalam fail asal'ganti_string'- ini mewakili nilai rentetan yang digunakan untuk menggantikan nilai yang dicari. String harus sesuai dengan string yang terdapat pada perintah 'search_string'. 'nama fail'- ini adalah nama fail di mana penggantian akan digunakan.

Laksanakan perintah berikut di terminal anda:

sed / laman web / laman web / g 'singleboardbytes.txt> fosslinux.txt

Penggantian Rentetan menggunakan sed

Catatan: anda juga dapat menjalankan perintah di atas dengan meletakkannya sebagai skrip bash.
Mengganti menggunakan -i perintah

Setelah menjalankan perintah, langkah seterusnya adalah mengganti menggunakan -i perintah. -i adalah representasi untuk "di tempat", yang bermaksud file hanya diganti, dan tidak ada pembuatan fail tambahan. Dengan menggunakan contoh kami di atas, jalankan arahan berikut:

sed -i / laman web / laman web / g 'singleboardbytes.txt

Mengganti menggunakan perintah -i

Dari gambar di bawah, anda dapat melihat tanda seru yang bertuliskan, "File / home / tuts / singleboardbytes".txt ditukar pada cakera."Ini menunjukkan bahawa perubahan telah berjaya dilakukan.

Perubahan dibuat ke singleboard bytes.txt

Gambar di bawah adalah fail yang berisi perubahan yang dilakukan pada langkah sebelumnya, baik pada nama file (singleboardbytes.txt ke fosslinux.txt) dan perkataan tapak telah ditukar menjadi laman web.

Perubahan terakhir setelah menjalankan arahan sed

Menggunakan pemboleh ubah sebagai nilai carian dan penggantian

Dengan sedikit interpolasi, pemboleh ubah dapat digunakan untuk melakukan penggantian tali. Argumen sed pertama, dalam kes ini, harus menggunakan tanda petik berganda dan bukannya petikan tunggal. Contohnya, kod anda akan serupa dengan yang berikut:

tuts () carian tempatan = $ 1 tempatan ganti = $ 2 # Perhatikan tanda petik dua kali sed -i "s / $ search / $ substit / g" singleboardbytes.txt

Menggunakan pemboleh ubah sebagai nilai carian dan penggantian

sed mempunyai dua rasa, iaitu: the FreeBSD dan juga Linux sed. Distro Linux menggunakan sed Linux sementara pengguna OS X menggunakan sed FreeBSD. Rasa ini sangat berbeza, dan oleh itu seseorang tidak dapat mengalihkan perintah dari satu rasa yang lain ke rasa yang lain.

Sebagai contoh, sambil mengganti kandungan fail menggunakan FreeBSD, sandaran harus dilakukan dengan menggunakan .sambungan bak. Atau anda boleh memulakan sandaran dengan penggunaan tanda kutip kosong segera setelah notasi -i seperti yang ditunjukkan dalam sintaks bash di bawah:

tuts () carian tempatan = $ 1 ganti tempatan = $ 2 sed -i "" "s / $ search / $ Replant / g" singleboardbytes.txt

Sekiranya cadangan tidak dilakukan semasa menggunakan FreeBSD seperti yang digambarkan dalam kod sintaks di atas, anda akan mengalami ralat seperti yang ditunjukkan di bawah:

sed: 1: "/ Pengguna / pengguna / jalan / tut…": watak tambahan pada akhir arahan h

Cara mengganti fail dan memadankan pola digit menggunakan perintah sed

Sekiranya anda berjaya menjalankan skrip, pencarian semua kandungan berangka yang ada dalam fail akan dilakukan. Kemudian kandungannya kemudian akan diganti dengan menambahkan $ sebelum nombor.

#!/ bin / bash # Periksa nilai argumen baris perintah wujud atau tidak jika [$ 1 != ""]; kemudian # Cari semua rentetan yang mengandungi digit dan tambahkan $ sed -i's / \ b [0-9] \ 5 \ \ b / $ & / g '$ 1 fi

Mengganti rentetan menggunakan perintah awk

Dalam kes ini, kita akan menggunakan perintah awk dan bukannya perintah sed untuk mengganti kandungan fail. Perbezaan antara perintah ini adalah bahawa perintah sed langsung mengemas kini fail asal, yang tidak berlaku dengan perintah awk.

#!/ bin / bash # Periksa nilai argumen baris perintah wujud atau tidak jika [$ 1 != ""]; kemudian # Cari semua rentetan berdasarkan tarikh awk 'sub ("02/06/2020", "12/06/2020") 1' $ 1> temp.txt && mv temp.txt $ 1 fi

Kesimpulannya

Contoh di atas sangat penting untuk kemajuan anda dalam mempelajari cara mengganti tali di Bash. Oleh itu, untuk menjadi pandai, anda harus kerap berlatih. Mencari dan mengganti rentetan dalam fail mungkin kelihatan rumit, tetapi anda akan merasa lebih terkawal apabila mengikuti garis panduan kami dengan betul.

Yang perlu diperhatikan ialah menjalankan perintah mungkin kadang-kadang kelihatan lebih terkawal, tetapi anda harus berhati-hati agar tidak menimbulkan kekacauan. Apabila anda memasukkan arahan yang salah, anda akan mematikan komputer anda, menyebabkan anda lebih banyak masalah seperti kehilangan data. Oleh itu, untuk selamat, selalu salin dan tampal kod seperti yang ada di terminal anda. Ini akan mengelakkan kesalahan ejaan yang mungkin merosakkan mesin anda. Kami harap artikel ini membantu anda mempelajari cara mengganti rentetan dalam bash menggunakan artikel ini.

Mengawal & menguruskan pergerakan tetikus antara beberapa monitor di Windows 10
Pengurus Tetikus Paparan Dwi membolehkan anda mengawal & mengkonfigurasi pergerakan tetikus antara beberapa monitor, dengan memperlahankan pergerakann...
WinMouse membolehkan anda menyesuaikan & meningkatkan pergerakan penunjuk tetikus pada PC Windows
Sekiranya anda ingin meningkatkan fungsi lalai penunjuk tetikus anda gunakan perisian percuma WinMouse. Ia menambah lebih banyak ciri untuk membantu a...
Butang klik kiri tetikus tidak berfungsi pada Windows 10
Sekiranya anda menggunakan tetikus khusus dengan komputer riba, atau komputer desktop anda tetapi butang klik kiri tetikus tidak berfungsi pada Window...