GNU/Linux >> Linux Esercitazione >  >> Linux

Cosa c'è di sbagliato nella mia regex lookahead in GNU sed?

sed -i '/^foo/! s/^/bar/' file.txt
  • -i cambia il file sul posto
  • /^foo/! esegue l'azione successiva solo sulle righe diverse da ! che inizia con foo ^foo
  • s/^/bar/ cambia l'inizio della riga in barra

Per quanto ne so sed non ha né guardare avanti né guardare indietro. Passa a un linguaggio più potente con una sintassi simile, come perl .


Utilizzi la sintassi delle espressioni regolari compatibili con Perl (PCRE) che non è supportata da GNU sed. Dovresti riscrivere la tua regex secondo SED Regular-Expressions o usare perl invece.

Nota che SED non ha lookahead e quindi non supporta la funzione regex che stavi cercando di usare. Può essere fatto in SED utilizzando altre funzionalità, come altri hanno menzionato.


Linux
  1. Partizionare un'unità su Linux con GNU Parted

  2. Cosa c'è di nuovo con rdiff-backup?

  3. Estrarre un'espressione regolare abbinata a "sed" senza stampare i caratteri circostanti?

  4. Aggiunta con 'sed'?

  5. Cosa fa Gnome con i tasti multimediali?

Iniziare con le espressioni regolari

Cos'è Git Bash; Lavorare con i comandi Git Bash

10 esempi pratici di regex con grep

Cos'è ?=nel Makefile

Traccia il file .gnu con gnuplot

Cosa può andare storto con un aggiornamento GLIBC?