GNU/Linux >> Belajar Linux >  >> Linux

temukan teks yang cocok dan ganti baris berikutnya

Satu cara:Contoh file

$ cat file
Cygwin
Unix
Linux
Solaris
AIX

Menggunakan sed, ganti baris berikutnya setelah pola 'Unix' dengan 'hi':

$ sed '/Unix/{n;s/.*/hi/}' file
Cygwin
Unix
hi
Solaris
AIX

Untuk pertanyaan spesifik Anda:

$ sed '/<key>ConnectionString<\/key>/{n;s/<string>.*<\/string>/<string>NEW STRING<\/string>/}' your_file
<key>ConnectionString</key>
<string>NEW STRING</string>

Ini mungkin berhasil untuk Anda (GNU sed):

sed '/<key>ConnectionString<\/key>/!b;n;c<string>changed_value</string>' file

!b meniadakan alamat sebelumnya (regexp) dan keluar dari pemrosesan apa pun, mengakhiri perintah sed, n mencetak baris saat ini dan kemudian membaca baris berikutnya ke dalam ruang pola, c mengubah baris saat ini menjadi string yang mengikuti perintah.


Berhasil. Selain itu tertarik untuk menyebutkan bahwa jika Anda menulis,

sed '/<key>ConnectionString<\/key>/!b;n;n;c<string>changed_value</string>' file

Perhatikan dua n, itu menggantikan setelah dua baris dan seterusnya.


Linux
  1. Menggunakan perintah Sed,ex &Perl untuk menemukan dan mengganti teks di Linux

  2. Bagaimana Cara Mengganti String Dalam File?

  3. Editor Vi dan Vim:12 Contoh Temukan dan Ganti yang Kuat

  1. Pencarian dan penggantian rekursif dalam file teks di Mac dan Linux

  2. Temukan dan ganti dalam skrip shell

  3. Temukan dan ganti teks dalam file di antara rentang baris menggunakan sed

  1. Menggunakan sed untuk menemukan dan mengganti file teks di Linux

  2. Bagaimana melakukan sed like text ganti dengan python?

  3. Menggunakan grep dan sed untuk mencari dan mengganti string