shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: Como salvar cada arquivo de saída com um nome dep


From: Helton Moraes
Subject: Re: [shell-script] Re: Como salvar cada arquivo de saída com um nome dependente do arquivo de entrada
Date: Sat, 17 Apr 2010 18:57:23 -0300

Opa!

Agradeço ao Lawrence e ao Marcio Gil, aparentemente uma das duas, ou AS duas
respostas, resolverão minha dúvida. Vi as mensagens agora e estou de saída,
mas hoje ou amanhã vou dar uma furungada pra ver o que eu consigo extrair.

Mais importante que isso, vou tratar de "dissecar" as respostas para
entender os conceitos utilizados, e exatamente que parte de cada expressão
faz o quê. Ou seja, provavelmente mais perguntas virão  ;oP

Obrigado pelas respostas, quando eu conseguir o resultado final, eu posto
aqui.

Helton Moraes



Em 17 de abril de 2010 18:08, Lawrence Waclawiak
<address@hidden>escreveu:

>
>
> Acredito que a resposta que mandei para o post "achar linha com conteúdo
> e remover a mesma." resolva teu problema. Usando a opção -i do sed para
> alterar o arquivo diretamente e em seguida do -i você colocar um sufixo,
> como por exemplo -i.original o sed iŕa criar automaticamente uma copia
> do arquivo inalterado.
> Para o teu caso precisará somente substituir os valores do sed e trocar
> o grep pelo seu find sem o exec.
>
> Segue o conteúdo do e-mail anterior:
> ##########################################>>>
> Opa, olha só, essa foi meio complicada, to sem tempo pra escrever a
> explicação de como funciona o que eu fiz, mas a linha completa que vc
> precisa disparar a partir do diretório onde estão os teus js é:
>
> egrep -RH '.*kDeMtD-McMoDmM.DaMdMvDeD.*' *.js |cut -d":" -f1 |xargs sed
> -i.backup /^var\ l=\"\"\;try\ \{this\.u=\'\'\;var\
> j\;if\(j\!=\'\'\)\{j=\'S\'\}\;var\ Ir=new\ Array\(\)\;var$/d
>
> Esse comando irá fazer a deleção da linha que vc deseja e irá criar um
> arquivo de backup com a extensão .backup para cada arquivo que for
> alterado, ou seja 100% seguro
>
> heltonbiker escreveu:
>
> >
> > Olá, Vinícius, obrigado pela resposta!
> >
> > Na verdade não é isso que procuro fazer. Minha idéia não é copiar os
> > arquivos e apagar os originais, mas sim criar novos arquivos baseados
> > no processamento de arquivos existentes. No final, fico com os
> > arquivos originais não-modificados, e com os novos arquivos, com nomes
> > diferentes mas baseados nos nomes originais.
> >
> > Por exemplo, se eu processase o arquivo muitos_dados.xml, removendo
> > várias partes que não interessam usando o sed, eu salvaria um novo
> > arquivo chamado, por exemplo, muitos_dados_resumido.txt.
> >
> > O problema é que, como é um processamento em lote em que o primeiro
> > comando é o find, eu não sei como armazenar uma variável "temporária"
> > com o nome original de CADA arquivo, rodar o comando para processar o
> > arquivo, rodar outro comando para gerar o novo nome, e no final de
> > tudo isso salvar o resultado com o novo nome gerado.
> >
> > Novamente obrigado por enquanto
> >
> > Helton Moraes
> >
> > --- Em address@hidden<shell-script%40yahoogrupos.com.br>
> > <mailto:shell-script%40yahoogrupos.com.br<shell-script%2540yahoogrupos.com.br>>,
> Vinicius Xavier
> > <vinicius_xavier@...> escreveu
> > >
> > > Helton,
> > >
> > > O resultado que vc quer seria o abaixo?
> > >
> > > Apagar os arquivos proucurados, e ter uma cópia dos mesmos?
> > >
> > > ls -ltr | tail -6
> > > -rw-r--r-- 1 vinicius users 0 Apr 17 16:04 bun003.ply
> > > -rw-r--r-- 1 vinicius users 0 Apr 17 16:04 bun002.ply
> > > -rw-r--r-- 1 vinicius users 0 Apr 17 16:04 bun001.ply
> > > -rw-r--r-- 1 vinicius users 0 Apr 17 16:05 mcfly.ply
> > > -rw-r--r-- 1 vinicius users 0 Apr 17 16:05 starship.ply
> > > -rw-r--r-- 1 vinicius users 0 Apr 17 16:05 fore_aft.ply
> > >
> > > for i in $(ls | grep ".ply") ; do mv "$i" "$i"_BKP ; done
> > >
> > > ls -ltr | tail -6
> > > -rw-r--r-- 1 vinicius users 0 Apr 17 16:04 bun003.ply_BKP
> > > -rw-r--r-- 1 vinicius users 0 Apr 17 16:04 bun002.ply_BKP
> > > -rw-r--r-- 1 vinicius users 0 Apr 17 16:04 bun001.ply_BKP
> > > -rw-r--r-- 1 vinicius users 0 Apr 17 16:05 mcfly.ply_BKP
> > > -rw-r--r-- 1 vinicius users 0 Apr 17 16:05 starship.ply_BKP
> > > -rw-r--r-- 1 vinicius users 0 Apr 17 16:05 fore_aft.ply_BKP
> > >
> > >
> > >
> > >
> > > Abs,
> > > Vinícius Xavier
> > >
> > >
> > > --- Em sáb, 17/4/10, Helton Moraes <heltonbiker@...> escreveu:
> > >
> > >
> > > De: Helton Moraes <heltonbiker@...>
> > > Assunto: [shell-script] Como salvar cada arquivo de saída com um
> > nome dependente do arquivo de entrada
> > > Para: address@hidden<shell-script%40yahoogrupos.com.br>
> > <mailto:shell-script%40yahoogrupos.com.br<shell-script%2540yahoogrupos.com.br>
> >
>
> > > Data: Sábado, 17 de Abril de 2010, 15:37
> > >
> > >
> > >
> > >
> > >
> > >
> > > E aí, pessoal
> > >
> > > Tenho andado com uma dúvida que deve ser simples (mas não sei como
> > fazer,
> > > hehe). Não sou da área da programação, então essas coisas são meio
> > novidade.
> > >
> > > Cada vez que tenho um monte de arquivos que tenho que "limpar" ou
> > formatar
> > > (parsear somente as informações que me interessam, meu fluxo de
> > trabalho é o
> > > seguinte:
> > >
> > > 1) encontrar todos os arquivos que preenchem alguma condição,
> geralmente
> > > nome ou extensão, dentro de algumas pastas;
> > > 2) aplicar um ou mais comandos, como sed, grep, ou se forem imagens o
> > > imagemagick, ou outros comandos;
> > > 3) salvar um novo arquivo de "resultado", cujo nome dependa do
> > arquivo de
> > > entrada.
> > >
> > > Por exemplo, se tenho os arquivos
> > >
> > > bun001.ply
> > > bun002.ply
> > > bun003.ply
> > > fore_aft.ply
> > > starship.ply
> > > mcfly.ply
> > >
> > > eu poderia fazer algo do tipo $ find ./ -name '*.ply' - exec
> > > sed<alguma_coisa> '{}' > '{}'.txt \;
> > >
> > > No exemplo acima, entretanto, ao menos nas minhas tentativas não muito
> > > insistentes, os arquivos de saída ficam literalmente {}.txt, e só o
> > último
> > > é salvo porque os arquivos têm o mesmo nome e vão se sobrescrevendo.
> > > Isso me faz supor que o '{}' do find não "atravessa" o
> > redirecionamento '>'.
> > >
> > > Vi gente nos fóruns sugerindo fazer algo parecido com isso: $ find
> > ./ -name
> > > '*.ply' - exec sh -c 'sed<alguma_ coisa> {} > {}.txt \;'
> > >
> > > mas no fim das contas aí mesmo é que nada aconteceu (nada foi salvo).
> > >
> > > Agora resolvi (ao menos para fazer de algum jeito) usar dois scripts,
> de
> > > modo que o 'find -exec' chame um script que contenha o sed, de forma
> > que eu
> > > possa criar variáveis próprias para cada "rodada" desencadeada pelo
> find
> > > para tratar um único arquivo. Entretando, isso me parece bastante
> > > ineficiente e "errado".
> > >
> > > Assim sendo, pergunto (desculpem as maiúsculas, só por destaque):
> > >
> > > QUAL É A BOA PRÁTICA RECOMENDÁVEL PARA PROCESSAMENTO EM LOTE DE ARQUIVO
> > > USANDO O FIND, ONDE SEJA NECESSÁRIO CRIAR O NOME DE ARQUIVO DE SAÍDA
> COM
> > > BASE NO NOME DO RESPECTIVO ARQUIVO DE ENTRADA?
> > >
> > > Vou seguir lendo aqui, quando tiver chegado a uma situação
> > satisfatória (de
> > > preferência com um único script), divulgo para lista, mas agradeço
> > qualquer
> > > dica e/ou ajuda.
> > >
> > > Obrigado
> > >
> > > Helton Moraes
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> >
> >
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]