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: Édnei Rodrigues
Subject: Re: [shell-script] Esse é difícil - procurar uma expressão e altera-la - varios arquivos
Date: Wed, 5 Nov 2008 09:05:58 -0500

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 ..."
> >
> >
>
> [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]