Use o parâmetro -i
para alterar permanentemente o arquivo.
ao usar sed
com um arquivo como este
sed 's/a/o' fruits
fornece a saída necessária para o terminal, mas não altera o conteúdo do arquivo. Como faço para alterar permanentemente o arquivo com a substituição acima?
Em geral, você não deveria. O GNU coreutils e algumas outras versões adicionam uma opção -i
para edição no local, mas ela possui implementações variadas e não é portátil. Os arquivos não são fluxos, portanto, editá-los com sed
deve ser evitado. A opção -i
para sed
também quebra qualquer link simbólico, já que essencialmente o exclui e recria o arquivo. Use ed
ou ex
para uma alternativa mais sadia.
ex -s file << EOF
s/a/o/
w
EOF
A partir da página man do sed:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)