sed -i '/^foo/! s/^/bar/' file.txt
-i
changer le fichier en place/^foo/!
effectuer uniquement l'action suivante sur les lignes autres que!
commençant par foo^foo
s/^/bar/
changer le début de la ligne en barre
Autant que je sache sed
n'a ni vision en avant ni vision en arrière. Passez à un langage plus puissant avec une syntaxe similaire, comme perl
.
Vous utilisez une syntaxe d'expression régulière compatible perl (PCRE) qui n'est pas prise en charge par GNU sed. Vous devez réécrire votre regex selon SED Regular-Expressions ou utiliser perl
à la place.
Notez que SED n'a pas d'anticipation et ne prend donc pas en charge la fonctionnalité regex que vous essayez d'utiliser. Cela peut être fait dans SED en utilisant d'autres fonctionnalités, comme d'autres l'ont mentionné.