Grep: search et rlocation de la ligne complète

La command

grep "foo" myfile.txt 

imprime toutes les lignes correspondantes dans mon file.

Maintenant, je veux replace la ligne complète par une autre string. Comment puis je faire ça?

Si vous associez une sous-string de la ligne entière, vous pouvez soit utiliser la command sed avec une regex pour éponger le rest de la ligne:

 sed -i 's/^.*foo.*$/another ssortingng/' myfile.txt 

ou utilisez la command c pour replace la ligne correspondante en une seule fois:

 sed -i '/foo/ { c \ another ssortingng }' myfile.txt 

Si vous ne souhaitez pas taper des commands multilignes à l'invite, vous pouvez le placer dans un script à la place:

 $ cat foo.sed /foo/ { c \ another ssortingng } $ sed -i -f foo.sed myfile.txt 

Vous pouvez utiliser la fonctionnalité inplace de sed :

 sed -i -e 's/foo/bar/' myfile.txt