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 11:57:08 -0200
User-agent: Mutt/1.4.2.3i

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]