Salve o arquivo depois de usar o comando sed

1

Estou usando o seguinte comando para substituir yyyymmdd to YYYYMMDDHH24MISS no meu arquivo:

sed -e 's/\('yyyymmdd'\)/\('YYYYMMDDHH24MISS'\)/g' filename

Depois de executar o comando no PuTTY, ele exibe o arquivo com valores substituídos, mas eles não refletem se eu more o arquivo.

Eu tentei usar -i , mas diz

sed: illegal option -- i

Alguém pode, por favor, sugerir como faço para substituir o código em vários arquivos e salvá-los?

    
por Hardik Kotecha 04.02.2016 / 17:02

2 respostas

6

Tente isto:

sed 's/yyyymmdd/YYYYMMDDHH24MISS/g' filename > changed.txt

Ou para manter o mesmo nome de arquivo:

sed 's/yyyymmdd/YYYYMMDDHH24MISS/g' filename > changed.txt && mv changed.txt filename
    
por 04.02.2016 / 17:09
2

Seu comando sed envia apenas seu resultado para a saída padrão. Você teria que redirecioná-lo em um comando subseqüente (NÃO no mesmo comando, como sed 'sedcommand' file > file , pois isso apagaria o arquivo antes de processá-lo).

Você também pode canalizar os comandos para ed em vez de usar sed :

for file in $filelist ; do
  echo -e '%s/yyyymmdd/YYYYMMDDHH24MISS/g\nw' | ed $file
done

que substitui todas as linhas ( % ) e, depois de uma nova linha de separação ( \n ), grava o arquivo modificado ( w ).

    
por 04.02.2016 / 17:40