[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Ajuda com o Sed



Olá Silvio Martins, 

On Fri, 18 Feb 2005 15:26:03 -0200, Savio Ramos
<savio.debian@terra.com.br> wrote:
> Desejo juntar dois arquivos e creio que seria o uso do Sed a solução do
> problema.
> 
> O primeiro arquivo contém os nomes e caminhos dos arquivos acrescidos de uma
> contra barra antes do sublinhado:
> 
> qcadactions/src/rs\_actioninfodist2.cpp
> qcadactions/src/rs\_actionlayersadd.cpp
> qcadactions/src/rs\_actionblocksexplode.cpp
> qcadactions/src/rs\_actionfilesave.cpp
> [...] e assim vai...
> 
> O segundo contém os nomes dos arquivos sem a contra barra antes do
> sublinado:
> 
> rs_actiondrawcircle.cpp
> rs_actioninfodist2.cpp
> rs_actionlayersadd.cpp
> rs_actionblocksexplode.cpp
> rs_actionfilesave.cpp
> [...] e assim vai...
> 
> Desejo que sejam mesclados os dois e cada linha fique assim, o caminho do
> arquivo e nome do arquivos acrescidos dos comandos do Latex:
> 
> \chapter{Arquivo qcadactions/src/rs\_actiondrawcircle.cpp}
> \lstinputlisting{rs_actiondrawcircle.cpp}
> 
> \chapter{Arquivo qcadactions/src/rs\_actioninfodist2.cpp}
> \lstinputlisting{rs_actioninfodist2.cpp}
> 
> \chapter{Arquivo qcadactions/src/rs\_actionlayersadd.cpp}
> \lstinputlisting{rs_actionlayersadd.cpp}
> 
> \chapter{Arquivo qcadactions/src/rs\_actionblocksexplode.cpp}
> \lstinputlisting{rs_actionblocksexplode.cpp}
> 
> \chapter{Arquivo qcadactions/src/rs\_actionfilesave.cpp}
> \lstinputlisting{rs_actionfilesave.cpp}
> 
> Qual o programa executa tal façanha? Existe solução simples com o Sed ou tenho
> que encarar um estudo maior com Emacs que entendo menos ainda que o Sed que não
> entendo nada?

  Nesse caso um shell-script pode resolver - acompanhe:

baroni@gnu:~$ cat file_a
qcadactions/src/rs\_actiondrawcircle.cpp
qcadactions/src/rs\_actioninfodist2.cpp
qcadactions/src/rs\_actionlayersadd.cpp
qcadactions/src/rs\_actionblocksexplode.cpp
qcadactions/src/rs\_actionfilesave.cpp

baroni@gnu:~$ cat file_b
rs_actiondrawcircle.cpp
rs_actioninfodist2.cpp
rs_actionlayersadd.cpp
rs_actionblocksexplode.cpp
rs_actionfilesave.cpp

baroni@gnu:~$ exec 4<file_a; exec 5<file_b ; for CHAPTER in $(cat <&
4); do  read LISTING <&5 ; [ -z "${LISTING}" ] && break;  echo
"\\chapter{Arquivo ${CHAPTER}}"; echo "\lstinputlisting{${LISTING}}" ;
done
\chapter{Arquivo qcadactions/src/rs\_actiondrawcircle.cpp}
\lstinputlisting{rs_actiondrawcircle.cpp}
\chapter{Arquivo qcadactions/src/rs\_actioninfodist2.cpp}
\lstinputlisting{rs_actioninfodist2.cpp}
\chapter{Arquivo qcadactions/src/rs\_actionlayersadd.cpp}
\lstinputlisting{rs_actionlayersadd.cpp}
\chapter{Arquivo qcadactions/src/rs\_actionblocksexplode.cpp}
\lstinputlisting{rs_actionblocksexplode.cpp}
\chapter{Arquivo qcadactions/src/rs\_actionfilesave.cpp}
\lstinputlisting{rs_actionfilesave.cpp}
baroni@gnu:~$ 

> Qualquer ajuda sou-lhes grato pois são mais de 250 arquivos e na mão vou levar
> dias para completar a tarefa.

  Que tal 1 minuto agora? :) 

  Abraços!
Rodrigo Ferreira Baroni
" ... mas se é  algo cujo conhecimento a humanidade poderá se
beneficiar tremendamente,  eu não devo reter pra mim. A proposta da
ciência e da tecnologia é desenvolver informações  úteis para a
humanidade para ajudar as  pessoas a viverem suas vidas  de forma
melhor. Se prometemos  reter essa  informação, se mantivermos segredo,
então estaremos traindo a missão de nossa área."
         - Richard Stallman - Presidente da Fundação do Software Livre
                      { Free Software Foundation: www.fsf.org }



Reply to: