O sed escreve no arquivo ou dá uma saída de amostra

1

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?

    
por DesirePRG 25.04.2013 / 07:30

3 respostas

3

Use o parâmetro -i para alterar permanentemente o arquivo.

    
por 25.04.2013 / 07:40
1

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
    
por 25.04.2013 / 08:10
0

A partir da página man do sed:

-i[SUFFIX], --in-place[=SUFFIX]

          edit files in place (makes backup if extension supplied)
    
por 25.04.2013 / 07:43

Tags