shell-script-pt
[Top][All Lists]
Advanced

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

Re: [shell-script] substituir uma linha por um texto grande


From: Eliphas Levy Theodoro
Subject: Re: [shell-script] substituir uma linha por um texto grande
Date: Wed, 21 Nov 2001 14:09:40 -0200 (BRST)

address@hidden, @ 12:40:

> Pessoal um amigo me respondeu uma pergunta de como substiruit uma
> linha de um arquivo, soh que preciso substitui-la com um grande
> texto entaum preciso querbrar linhas.
>
> exemplo
>
> sed 's/<attribute name="Password">.*/Novo texto q deve ter quebra de
> linha/' arquivo > novoarquivo

Um grande texto? Joga num arquivo. Se é pra substituir a linha inteira, é
fácil.

O comando é sed '/<attribute name=bla>/{r arquivo.txt.novo; D; }'

Mas isso não funcionou aqui. Acho que o sed acha que o nome do arquivo não
acaba no ponto-e-vírgula, então tem que se colocar em várias linhas:

sed '/<att...>/{
r arquivo.txt.novo
D;}' arquivo.txt.velho

Exemplinho:

$ cat tst1
mala
mela
mila
mola
mula
$ cat tst2
lala
$ sed '/mila/{
r tst2
D;}' tst1

----resultado:
mala
mela
lala
mola
mula
----

-- 
Eliphas

Windows 9x: 32-bit extensions and a graphical shell for a 16-bit patch
to an 8-bit operating system originally coded for a 4-bit microprocessor,
written by a 2-bit company that can't stand 1-bit of competition.


From (no email address) Wed Nov 21 08:22:26 2001
Return-Path: <address@hidden>
X-Sender: address@hidden
X-Apparently-To: address@hidden
Received: (EGP: mail-8_0_0_1); 21 Nov 2001 16:22:26 -0000
Received: (qmail 63014 invoked from network); 21 Nov 2001 16:22:25 -0000
Received: from unknown (216.115.97.172)
  by m2.grp.snv.yahoo.com with QMQP; 21 Nov 2001 16:22:25 -0000
Received: from unknown (HELO perninha.conectiva.com.br) (200.250.58.156)
  by mta2.grp.snv.yahoo.com with SMTP; 21 Nov 2001 16:22:21 -0000
Received: from burns.conectiva (burns.conectiva [10.0.0.4])
        by perninha.conectiva.com.br (Postfix) with SMTP id 0E1AA38CD8
        for <address@hidden>; Wed, 21 Nov 2001 13:22:15 -0300 (EST)
Received: (qmail 25698 invoked by uid 0); 21 Nov 2001 16:19:00 -0000
Received: from verde.conectiva (10.0.2.168)
  by burns.conectiva with SMTP; 21 Nov 2001 16:19:00 -0000
Date: Wed, 21 Nov 2001 14:22:59 -0200 (BRST)
X-X-Sender:  <verde@verde.conectiva>
To: <address@hidden>
Subject: Re: [shell-script] substituir uma linha por um texto grande
In-Reply-To: <Pine.LNX.4.33L.0111211355310.1051-100000@elisangela.intranet>
Message-ID: <Pine.LNX.4.33L.0111211418330.913-100000@verde.conectiva>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=iso-8859-1
Content-Transfer-Encoding: 8BIT
X-eGroups-From: # aurelio marinho jargas <address@hidden>
From: # aurelio marinho jargas <address@hidden>
X-Yahoo-Profile: verde6666

@ 21/11, Eliphas Levy Theodoro:
> address@hidden, @ 12:40:
> > Pessoal um amigo me respondeu uma pergunta de como substiruit uma
> > linha de um arquivo, soh que preciso substitui-la com um grande
> > texto entaum preciso querbrar linhas.
> >
> > exemplo
> >
> > sed 's/<attribute name="Password">.*/Novo texto q deve ter quebra de
> > linha/' arquivo > novoarquivo
>
> Um grande texto? Joga num arquivo. Se é pra substituir a linha inteira, é
> fácil.
>
> O comando é sed '/<attribute name=bla>/{r arquivo.txt.novo; D; }'
>
> Mas isso não funcionou aqui. Acho que o sed acha que o nome do arquivo não
> acaba no ponto-e-vírgula, então tem que se colocar em várias linhas:
>
> sed '/<att...>/{
> r arquivo.txt.novo
> D;}' arquivo.txt.velho

usa o -e, aí não precisa quebrar linha
(e pode ser d e não D pois o conteúdo do arquivo é jogado direto
na saída padrão)

sed -e '/<attribute name=bla>/{' -e 'r arquivo.txt.novo' -e 'd;}'

ou dá pra usar a pesquisa vazia '//' que é igual a última
pesquisa feita, aí não precisa das chaves:

sed -e '/<attribute name=bla>/r arquivo.txt.novo' -e '//d'


maaaaaaaaaaaaassa. &:)

-- 
http://verde666.org s/click/^a]/;^[:wq



reply via email to

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