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:08:48 -0500

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