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.