GNU/Linux >> Belajar Linux >  >> Ubuntu

Saring Tag Html Dan Ganti Dengan Tag Html Lain Menggunakan Sed?

Saya mengganti <B> dan </B> dengan <STRONG> dan </STRONG> dalam sebuah file. Ini seperti mengganti tag hmtl. Saya menggunakan sed 's/<B>/STRONG/g' . Itu berhasil tetapi jika dalam file [B] dan [/B] hadir. Kemudian juga diubah menjadi [STRONG] dan [/STRONG] . Saya tidak mengerti logika di baliknya.

Jawaban yang Diterima:

Secara default, sed menggunakan ekspresi reguler dasar. Itu berarti GNU memungkinkan < cocok dengan awal kata dan > mencocokkan akhir kata. Perhatikan:

$ echo '<B> BBB B' | sed 's/<B>/STRONG/g'
<STRONG> BBB STRONG

<B> cocok dengan kata B yang muncul dua kali dalam string di atas. Karena cocok dengan kata B dan bukan kurung sudut, kurung sudut dibiarkan tidak berubah.

Jika Anda ingin mencocokkan kurung sudut, < , biarkan garis miring terbalik:

$ echo '<B> BBB B' | sed 's/<B>/<STRONG>/g'
<STRONG> BBB B

<B> cocok dengan kurung siku terbuka diikuti dengan B diikuti dengan kurung siku penutup. Jadi, <B> diganti dengan <STRONG> tapi B dibiarkan sendiri.

Menangkap tag pembuka dan penutup

$ echo '<B> BBB B </B>' | sed -r 's|<(/)?B>|<1STRONG>|g'
<STRONG> BBB B </STRONG>

-r adalah untuk regex yang diperluas tetapi versi terbaru dari GNU sed juga mendukung -E sebagai sinonim untuk -r . BSD sed menggunakan -E untuk ini dan, kabarnya, standar POSIX masa depan telah mengadopsi -E . Jadi, untuk kompatibilitas, seseorang mungkin ingin menggunakan (tips topi @Kos):

$ echo '<B> BBB B </B>' | sed -E 's|<(/)?B>|<1STRONG>|g'
<STRONG> BBB B </STRONG>

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

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

  3. Menggunakan beberapa pola sekaligus dengan perintah Sed

  1. Ganti Baris Dengan Konten Lain Menggunakan Sed Dan Paralel Untuk File Besar?

  2. Menggunakan Sed Dengan Karakter Khusus?

  3. Menggunakan grep dan sed untuk mencari dan mengganti string

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

  2. Menggunakan sed untuk membagi string dengan pembatas

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