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

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

Re: [shell-script] Esse é difícil - procurar uma expressão e altera-la -


From: jimmy
Subject: Re: [shell-script] Esse é difícil - procurar uma expressão e altera-la - varios arquivos
Date: Wed, 5 Nov 2008 12:33:25 -0200
User-agent: Mutt/1.4.2.3i

no último comando que lhe mandei era para colocar um 

| grep -F "SPARSE ATIVO" 

no final para facilitar a visualização das alterações, e caso fosse o 
que está esperando inserir a opção -i no sed para alterar permanentemente.

On Wed, Nov 05, 2008 at 09:08:48AM -0500, Édnei Rodrigues wrote:
> Jimmy, a saída que você fala para inserir o grep é o do find ?
> 
> 2008/11/5 Édnei Rodrigues <address@hidden>
> 
> > Obrigado pelas respostas.
> > Resultado Flavio:
> >
> > ./Makefile
> > .
> > ./lib_MSC/Makefile
> > ./lib_MSC
> > sed: -e expressão #1, caractere 33: unknown option to `s'
> > ./lib_PABX/Makefile
> > ./lib_PABX
> > sed: -e expressão #1, caractere 33: unknown option to `s'
> >
> >
> >
> >
> > Jimmy, já testo o seu!
> >
> > 2008/11/5 Flavio Junior <address@hidden>
> >
> >>   Na real eu acabei esquecendo de por o "-l" do grep no teu find..
> >>
> >>
> >> Erro meu mesmo:
> >>
> >> $ for file in $(find . -iname Makefile -exec grep -l "SPARSE ATIVO" {}
> >> \;);
> >>
> >> do
> >> > DIR=$(dirname $file)
> >> > sed -i.bkp "s/SPARTE ATIVO/SPARSE ATIVO - $DIR/" $file
> >> > done
> >>
> >> Com o -l o grep vai retornar somente o nome do arquivo.
> >>
> >> --
> >>
> >> Flávio do Carmo Júnior aka waKKu
> >>
> >> 2008/11/5 jimmy <address@hidden <ronaldo_tgz%40yahoo.com.br>>
> >>
> >>
> >> > On Wed, Nov 05, 2008 at 08:05:10AM -0500, Édnei Rodrigues wrote:
> >> > > Bom dia lista.
> >> > > Tinha feito uma modificação em vários Makefile e , burrice, esqueci de
> >> > > inserir na expressão o nome do arquivo.
> >> > > Deixa eu explicar melhor:
> >> > >
> >> > > tenho essa lista de makefile (exemplo):
> >> > >
> >> > > [ednei@eng-17 voip]$ find . -name Makefile
> >> > > ./upnp/libupnp/threadutil/Makefile
> >> > > ./upnp/libupnp/upnp/doc/Makefile
> >> > > ./upnp/libupnp/upnp/Makefile
> >> > > ./upnp/libupnp/ixml/doc/Makefile
> >> > > ./upnp/libupnp/ixml/Makefile
> >> > > ./upnp/libupnp/Makefile
> >> > > ./upnp/libigdctrl/Makefile
> >> > > ..
> >> > > ..
> >> > >
> >> > > dentro deles está:
> >> > > [ednei@eng-17 voip]$ find . -iname Makefile -exec grep "SPARSE ATIVO"
> >> {}
> >> > \;
> >> > >
> >> > > @echo " SPARSE ATIVO!!!"
> >> > > @echo " SPARSE ATIVO!!!!"
> >> > > @echo " SPARSE ATIVO!!!!"
> >> > > @echo " SPARSE ATIVO!!!!"
> >> > > @echo " SPARSE ATIVO!!!"
> >> > > @echo " SPARSE ATIVO!!!"
> >> > > @echo " SPARSE ATIVO"
> >> > > @echo " SPARSE ATIVO!!!!"
> >> > > @echo " SPARSE ATIVO!!!!"
> >> > >
> >> > > Notem que eu inseri essa expressão em cada makefile, mas esqueci de
> >> fazer
> >> > > isso:
> >> > >
> >> > > @echo " SPARSE ATIVO!!! - /upnp/libigdctrl "
> >> > > @echo " SPARSE ATIVO!!!! - ./upnp/libupnp/upnp/doc/"
> >> > >
> >> > > e assim vai....É possível fazer isso ? Pegar o makefile respectivo de
> >> > cada
> >> > > diretório, inserir naquela expressão o diretório corrente ???
> >> > >
> >> > >
> >> > >
> >> > > Obrigado pelas respostas.
> >> > >
> >> > >
> >> > > ------------------------------------
> >> >
> >> > bom leventei aqui na minha máquina um ambiente para emular o seu caso:
> >> >
> >> > user@host:/tmp/teste$ echo './upnp/libupnp/threadutil/Makefile
> >> > ./upnp/libupnp/upnp/doc/Makefile
> >> > ./upnp/libupnp/upnp/Makefile
> >> > ./upnp/libupnp/ixml/doc/Makefile
> >> > ./upnp/libupnp/ixml/Makefile
> >> > ./upnp/libupnp/Makefile
> >> > ./upnp/libigdctrl/Makefile' | xargs -i@ sh -c 'path=$(dirname @); mkdir
> >> -p
> >> > $path; touch @'
> >> > user@host:/tmp/teste$ tree
> >> > .
> >> > `-- upnp
> >> > |-- libigdctrl
> >> > | `-- Makefile
> >> > `-- libupnp
> >> > |-- Makefile
> >> > |-- ixml
> >> > | |-- Makefile
> >> > | `-- doc
> >> > | `-- Makefile
> >> > |-- threadutil
> >> > | `-- Makefile
> >> > `-- upnp
> >> > |-- Makefile
> >> > `-- doc
> >> > `-- Makefile
> >> >
> >> > 8 directories, 7 files
> >> > user@host:/tmp/teste$ find . -iname Makefile -exec sh -c 'echo @echo \"
> >> > SPARSE ATIVO!!!\" > {}' \;
> >> >
> >> > então fiz uma solução:
> >> >
> >> > user@host:/tmp/teste$ find . -iname Makefile -printf "%p %h\n" |
> >> > while read file path; do sed 's#\(SPARSE ATIVO!*\)"#\1 - '"$path"'"#'
> >> > $file; done
> >> >
> >> > isso é para testar; filtre a saída com um grep e se for o que está
> >> > procurando insira a opção -i no comando sed, "sed -i ..."
> >> >


reply via email to

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