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 s
comando sed's com uma regex para limpar o restante da linha:
sed -i 's/^.*foo.*$/another string/' myfile.txt
ou use o c
comando 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á.