Réponses:
Si vous faites correspondre une sous-chaîne de la ligne entière, vous pouvez soit utiliser la s
commande sed avec une expression régulière pour éponger le reste de la ligne:
sed -i 's/^.*foo.*$/another string/' myfile.txt
ou utilisez la c
commande pour remplacer la ligne correspondante en une seule fois:
sed -i '/foo/ { c \
another string
}' myfile.txt
Si vous ne voulez pas taper de commandes multilignes à l'invite, vous pouvez le mettre à la place dans un script:
$ cat foo.sed
/foo/ { c \
another string
}
$ sed -i -f foo.sed myfile.txt
}'
est sur une ligne séparée de another string
: le remplacement est tout sur cette deuxième ligne, y compris }
si vous le mettez là.