Hm... Seguindo a ideia de que uma linha vazia é igual a outra linha vazia...

[EMAIL PROTECTED] ~]# cat txt
xxx:aaa,eee,bbb


aaa:ddd







adfa

adfa
[EMAIL PROTECTED] ~]# cat txt | uniq
xxx:aaa,eee,bbb

aaa:ddd

adfa

adfa
[EMAIL PROTECTED] ~]#


--

Flávio do Carmo Júnior

On Dec 5, 2007 1:17 PM, [EMAIL PROTECTED] <[EMAIL PROTECTED]> 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
>  

Responder a