GNU/Linux >> Belajar Linux >  >> Linux

Apa yang salah dengan lookahead regex saya di GNU sed?

sed -i '/^foo/! s/^/bar/' file.txt
  • -i ubah file di tempat
  • /^foo/! hanya lakukan tindakan selanjutnya pada baris bukan ! dimulai dengan foo ^foo
  • s/^/bar/ ubah awal baris menjadi bilah

Sejauh yang saya tahu sed tidak melihat ke depan atau melihat ke belakang. Beralihlah ke bahasa yang lebih kuat dengan sintaksis serupa, seperti perl .


Anda menggunakan sintaks ekspresi reguler (PCRE) yang kompatibel dengan perl yang tidak didukung oleh GNU sed. Anda harus menulis ulang regex Anda sesuai dengan SED Regular-Expressions atau menggunakan perl sebagai gantinya.

Perhatikan bahwa SED tidak memiliki lookahead dan karena itu tidak mendukung fitur regex yang Anda coba gunakan. Itu dapat dilakukan di SED menggunakan fitur lain, seperti yang telah disebutkan orang lain.


Linux
  1. Mengekstrak Regex yang Dicocokkan Dengan 'sed' Tanpa Mencetak Karakter Sekitarnya?

  2. Mewarnai Keluaran Ekor Dengan Sed?

  3. Apa yang Gnome Lakukan Dengan Tombol Multimedia?

  1. Apa yang poll() lakukan dengan batas waktu 0?

  2. Apa yang salah dengan linux/if.h dan net/if.h?

  3. Apa itu ?=di Makefile

  1. Apa yang salah dengan skrip bash saya untuk menyimpan file x terakhir dan menghapus sisanya?

  2. Plot file .gnu dengan gnuplot

  3. Ekspresi reguler dengan sed