Cara Menggunakan Perintah SED untuk mengganti rentetan dalam fail

Cara Menggunakan Perintah SED untuk mengganti rentetan dalam fail

Adakah anda pernah mempunyai situasi di mana anda perlu mengganti perkataan atau ayat dalam banyak fail? Anda boleh menyalin dan menampalnya, atau mungkin ada skrip sedia ada yang dapat melakukan pekerjaan. Tetapi bagaimana jika anda hanya perlu menggantinya dengan perkataan atau ayat lain di tempat lain? Anda boleh menggunakan mencari, tetapi itu akan menjadi terlalu generik dan memerlukan menulis skrip untuk tugas ini. Dan bagaimana jika anda tidak tahu apa perkataan atau ayat yang mesti anda cari dan menggantikannya? Bagaimana dengan menggunakan sed? Sekiranya anda tidak biasa dengan baris arahan Unix, SED adalah editor aliran. Ini adalah editor teks mudah yang dibaca dari input standard dan melakukan operasi penyuntingan di aliran seperti yang dibaca. Ia biasanya digunakan untuk mencari dan menggantikan fungsi dalam skrip.

Dalam artikel ini, kami akan menunjukkan kepada anda beberapa contoh cara menggunakan SED untuk melakukan carian dan menggantikan teks dalam fail.

Cari dan ganti rentetan dalam fail

Jika anda hanya perlu melakukan carian mudah dan ganti, anda boleh menggunakan sintaks berikut:

Sed -I 's/string_to_find/string_to_replace/' file1 filen filen 

Di sini:

  • -Saya: Bendera ini menunjukkan kepada SED bahawa fail input anda dijangka menjadi salah satu fail yang ditentukan selepas arahan.
  • string_to_find: Ini adalah rentetan yang ingin anda cari dalam fail.
  • string_to_replace: Ini adalah rentetan yang anda mahu mengganti rentetan what_to_find dalam fail.
  • File1 File2 Filen: Ini adalah senarai fail yang akan dicari dan diganti oleh SED.

Perintah berikut akan mencari semua rentetan "hello" di selamat datang.txt fail. Kemudian ganti dengan rentetan baru "Howdy" dalam fail yang sama.

Sed -I 's/hello/howdy/g' selamat datang.txt  

Anda juga boleh membuat sandaran fail asal sebelum membuat perubahan dengan -i diikuti dengan beberapa lanjutan. Sebagai contoh:

sed -I.Sandaran 's/hello/howdy/g' selamat datang.txt  

Ini akan membuat fail selamat datang.txt.sandaran dalam direktori semasa dengan kandungan fail asal.

Ganti secara rekursif dalam pelbagai fail

Perintah berikut berguna untuk menggantikan rentetan dalam pelbagai fail sekaligus dalam direktori /opt /docs. Di sini cari akan menavigasi ke semua fail di bawah direktori yang ditetapkan dan melaksanakan perintah sed satu demi satu.

cari/opt/docs/-type f -exec sed -I 's/hello/howdy/g' ;  

Ganti teks tanpa menjejaskan fail asal

Sekiranya anda tidak mahu membuat perubahan dalam fail asal anda dan buat fail baru dengan rentetan yang berubah, gunakan arahan berikut.

SED 's/hello/howdy/g' selamat datang.txt> welcome_2.txt  

Perintah ini akan membuat fail baru selamat datang_2.txt dengan teks yang diubah suai. Fail asal dengan kekal tidak berubah.

Kesimpulan

Perintah SED adalah alat yang berkuasa yang boleh digunakan untuk mengedit teks dalam fail. Ia berguna apabila anda mempunyai situasi di mana anda perlu mencari dan menggantikan rentetan dalam banyak fail. Anda boleh menggunakan mencari, tetapi itu akan terlalu generik dan memerlukan menulis skrip. Dan bagaimana jika anda tidak tahu apa perkataan atau ayat yang mesti anda cari dan menggantikannya? Menggunakan SED adalah penyelesaian yang lebih baik.