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
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?
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
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
).