GNU/Linux >> Belajar Linux >  >> Linux

Gunakan Sed Untuk Mengganti String Dengan Satu yang Mengandung Nama Direktori (yaitu Slash “/”)?

Saya tahu ini telah ditanyakan sebelumnya, tetapi saya kesulitan memahami jawaban yang saya temukan. Pada dasarnya saya ingin menggunakan

sed -i 's/string//some/directory/g' file.txt

dan saya tidak dapat menemukan jawaban langsung tentang cara membuat /some/directory tidak memecah sed sintaks.

Jawaban yang Diterima:

sed memungkinkan beberapa pembatas sintaks, / menjadi satu-satunya yang paling umum digunakan.

Anda juga bisa mengatakan

sed -i 's,<string>,<some/directory>,g' file.txt

dimana , sekarang memiliki fungsi yang biasanya dilakukan oleh / , dengan demikian membebaskan yang terakhir dari makna khususnya.

Namun, perhatikan (seperti yang ditunjukkan oleh @Jeff Schaller), bahwa sekarang , tidak boleh muncul dalam nama file atau direktori – dan ini adalah karakter yang valid untuk nama file! Jawaban ini memberikan ikhtisar yang baik tentang cara melanjutkan saat menerapkan sed ke string dengan karakter khusus.


Linux
  1. Temukan dan ganti dengan sed di direktori dan sub direktori

  2. Temukan semua file dengan nama yang mengandung string

  3. Menggunakan sed untuk membagi string dengan pembatas

  1. Ganti kutipan pintar dengan perintah sed Linux

  2. Bagaimana cara mengganti karakter dengan sed secara rekursif?

  3. ganti baris dalam satu file dengan baris lain dengan nomor baris

  1. Bagaimana Cara Mengganti String Dalam File?

  2. Bagaimana Cara Menggunakan Sed Untuk Mengganti String Multi-baris?

  3. Bagaimana Mengganti String Dengan String Yang Mengandung Slash Dengan Sed?