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