GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist falsch an meiner Lookahead-Regex in GNU sed?

sed -i '/^foo/! s/^/bar/' file.txt
  • -i Ändern Sie die Datei an Ort und Stelle
  • /^foo/! Führen Sie die nächste Aktion nur in Zeilen aus, die nicht ! sind beginnend mit foo ^foo
  • s/^/bar/ Ändern Sie den Zeilenanfang in bar

Soweit ich weiß sed hat weder vorausblicken noch zurückblicken. Wechseln Sie zu einer leistungsfähigeren Sprache mit ähnlicher Syntax wie perl .


Sie verwenden Perl-kompatible reguläre Ausdruckssyntax (PCRE), die von GNU sed nicht unterstützt wird. Sie sollten Ihre Regex gemäß SED Regular-Expressions umschreiben oder perl verwenden stattdessen.

Beachten Sie, dass SED kein Lookahead hat und daher die Regex-Funktion, die Sie verwenden wollten, nicht unterstützt. Dies kann in SED mit anderen Funktionen erfolgen, wie andere bereits erwähnt haben.


Linux
  1. Was macht poll() mit einem Timeout von 0?

  2. Prozentwert mit GNU Diff

  3. Was ist falsch an linux/if.h und net/if.h?

  4. Was ist ?=im Makefile

  5. Was ist falsch an meinem Bash-Skript, um die letzten x Dateien zu behalten und den Rest zu löschen?

Erste Schritte mit regulären Ausdrücken

Was ist Git Bash? Arbeiten mit Git Bash-Befehlen

Einen Regex extrahieren, der mit „sed“ übereinstimmt, ohne die umgebenden Zeichen auszugeben?

Schwanzausgabe mit Sed einfärben?

10 praktische Beispiele für Regex mit grep

Was kann bei einem GLIBC-Upgrade schief gehen?