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

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

Re: [shell-script] Substituir várias linhas em branco por uma linha em b


From: address@hidden
Subject: Re: [shell-script] Substituir várias linhas em branco por uma linha em branco
Date: Wed, 05 Dec 2007 16:02:15 -0200
User-agent: Thunderbird 2.0.0.6 (X11/20070728)

Fantástico Flavio!

Grande idéia. Desde que não se tenho outro tipo qualquer de linha repetida.

$ uniq test.txt

Isto foi bem limpo.

Até
Rudson R. Alves

> Hm... Seguindo a ideia de que uma linha vazia é igual a outra linha
> vazia...
>
> [root@bloo ~]# cat txt
> xxx:aaa,eee,bbb
>
> aaa:ddd
>
> adfa
>
> adfa
> [root@bloo ~]# cat txt | uniq
> xxx:aaa,eee,bbb
>
> aaa:ddd
>
> adfa
>
> adfa
> [root@bloo ~]#
>
> --
>
> Flávio do Carmo Júnior
>
> On Dec 5, 2007 1:17 PM, address@hidden
> <mailto:alves_list%40yahoo.com.br> <address@hidden
> <mailto:alves_list%40yahoo.com.br>> wrote:
> >
> >
> >
> >
> >
> >
> > Olá pessoal,
> >
> > A algum tempo que vinha tentando encontrar alguma forma, menos
> > deselegante possível, de substituir várias linhas em branco em
> > seqüência, por apenas uma linha em branco. Por exemplo:
> >
> > $ cat teste.txt
> > 1111
> >
> > 2222
> >
> > 33333
> >
> > 445
> > 56
> > $ _
> >
> > deve ficar assim:
> >
> > $ cat teste-new.txt
> > 1111
> >
> > 2222
> >
> > 33333
> >
> > 445
> > 56
> > $ _
> >
> > Fiz isto com a linha
> >
> > $ sed ':i ; $! N; s/\n/N/ ; t i ; s/N\{3,\}/NN/g ; s/N/\n/g' test.txt
> >
> > Para um texto qualquer é conveniente substituir o "N" por algum caracter
> > como "µ", "Ø", ou algum caracter não existente no texto.
> >
> > Como não encontrei outras soluções na rede, resolvi expor aqui a idéia.
> >
> > Explicação:
> > O sed está dividido em três comandos.
> > 1 :i ; $! N; s/\n/N/; t i => faz um laço no texto e substitui todas
> > alimentações de linha (\n) pelo caracter "N"
> > 2 s/N\{3,\}/NN/g => substitui todas as ocorrências de três N's
> > (N{3,}) ou mais, por dois N (uma linha em branco)
> > 3 s/N/\n/g => substitui os Ns por alimentação de linha (\n)
> >
> > Se alguém tem alguma outra solução mais ou menos elegante para isto?
> > awk, outro sed, combinações diferentes de comandos...
> >
> > Até,
> > Alves
> >
>
>  



reply via email to

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