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.