O comando
grep "foo" myfile.txt
imprime todas as linhas correspondentes no meu arquivo.
Agora eu quero substituir a linha completa por outra string. Como eu posso fazer isso?
O comando
grep "foo" myfile.txt
imprime todas as linhas correspondentes no meu arquivo.
Agora eu quero substituir a linha completa por outra string. Como eu posso fazer isso?
Respostas:
Se você estiver combinando uma substring de toda a linha, poderá usar o scomando sed's com uma regex para limpar o restante da linha:
sed -i 's/^.*foo.*$/another string/' myfile.txt
ou use o ccomando para substituir a linha correspondente de uma só vez:
sed -i '/foo/ { c \
another string
}' myfile.txt
Se você não quiser digitar comandos com várias linhas no prompt, poderá inseri-lo em um script:
$ cat foo.sed
/foo/ { c \
another string
}
$ sed -i -f foo.sed myfile.txt
}'está em uma linha separada de another string: a substituição é tudo nessa segunda linha, incluindo a }que você colocou lá.