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: Flavio Junior
Subject: Re: [shell-script] Substituir várias linhas em branco por uma linha em branco
Date: Wed, 5 Dec 2007 14:35:25 -0200

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 <address@hidden> 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]