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: Flavio Junior
Subject: Re: [shell-script] Esse é difícil - procurar uma expressão e altera-la - varios arquivos
Date: Wed, 5 Nov 2008 11:59:01 -0200

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>

>   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]



reply via email to

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