Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Usando variáveis para alterar arquivos com sed
Colaboração: Sérgio Luiz Araújo Silva
Data de Publicação: 13 de Janeiro de 2007
Sempre que estudamos o SED (editor de streams), nos é ensinado que o arquivo a ser tratado pelo sed deve ser redirecionado para um novo arquivo e em seguida o conteúdo deste novo arquivo deve ser redirecionada para o arquivo original.
Mas...
... Criando uma variável (equivalente àquelas criadas com crases) que obrigam o shell a executar primeiro seu conteúdo podemos fazer algo do tipo:
echo "$(sed 's/nao/sim/' teste.txt)" > teste.txt
Um subshell é criado em --> "$(sed 's/nao/sim/' teste.txt)" e o resultado é então jogado para o nosso arquivo
Observações:
- Caso encontrem erros ou desejem fazer adições a esta dica sintam-se à vontade.
- Não esquça de usar as aspas duplas senão o arquivo ficará com uma linha enorme pois o shell retira os espaços e quebras de linha
Esta dica é uma variação da dica publicada pelo "Davidson" Davidson Rodrigues Paulo".
Motorola mistura Linux e Windows Media Player
Fonte: Notícias Linux
Conheça o Motorizr Z6 da Motorola que mistura Linux e Windows Media Player "O aparelho ... traz uma inusitada combinação de tecnologias. O sistema operacional fica por conta do Java Linux. Quem comanda a parte de música, por sua vez, é o Windows Media Player da Microsoft."
Fonte: http://info.abril.com.br/aberto/infonews/012007/09012007-17.shl
Comente: http://www.noticiaslinux.com.br/nl1168392576.html#comentarios
Veja a relação completa dos artigos de Sérgio Luiz Araújo Silva
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Avalie esta dica
Opinião dos Leitores
14 Jan 2007, 16:09
real 0m2.208s
user 0m1.892s
sys 0m0.163s
real 0m1.866s
user 0m1.167s
sys 0m0.626s
$> cat sed_teste
#!/bin/bash
declare -i i=0
if ! [ -e teste.txt.backup ];then
( while [ $i -lt 100000 ];do echo "nao nao nao nao nao nao nao nao nao nao"; let i++;done )>| teste.txt
cp -f teste.txt teste.txt.backup
else
cp -f teste.txt.backup teste.txt
fi
time echo "$(sed 's/nao/sim/g' teste.txt)" >| teste.txt
mv -f teste.txt teste1.txt
cp -f teste.txt.backup teste.txt
time sed -i 's/nao/sim/g' teste.txt
mv -f teste.txt teste2.txt
diff -q teste1.txt teste2.txt
13 Jan 2007, 11:25
Entretanto, o sed tem uma opcao que facilita tudo isso e ja foi publicada aqui na dicas-l. Usando o "-i" teria o mesmo efeito que o comando apresentado acima
sed -i 's/nao/sim/' teste.txt
Maires detalhes na dica
sed: alterações sem arquivos temporários
http://www.dicas-l.com.br/dicas-l/20041102.php










