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