precisa de um regex que elimine os términos de linha no arquivo de texto, exceto aqueles em linhas em branco

0

Por favor, veja a imagem:

O que regex excluiria todos os finais de linha apenas de linhas não em branco (não excluí-las de linhas em branco? Isso é de um arquivo de texto com mais de 8000 linhas.

Vista de 64 bits.

    
por NotSuper 23.08.2010 / 20:39

4 respostas

1

Meu método bagunçado seria abri-lo em word, fazer um find e substituir em ^ p ^ p (dois parágrafos finais em uma linha) com algum caractere não usado no arquivo, como "|". Então eu substituiria todo ^ p com apenas um espaço. Então eu voltaria e substituiria o "|" com ^ p.

    
por 23.08.2010 / 21:45
1

Se você estiver tentando converter parágrafos com quebras de linha no final de cada linha para o texto contínuo em cada parágrafo:

Now is the time for all good\n
men to come to the aid of their\n
country\n
\n

em

Now is the time for all good men to come to the aid of their country\n
\n

Então, algo assim deve funcionar:

sed -n '1{x;d};H;${x;s|\([^\n]\)\n\([^\n]\)| |gp}' file

ou

sed ':a;$!N;s|^\n||;s|\n\([^\n]\+\)$| |;ta;p;D' file
    
por 30.08.2010 / 21:27
0

Depende do pacote de regex que você tem, se tem ou não a expectativa.

Eu pessoalmente faço:

- remove espaços em branco à direita, isso garante que as linhas 'em branco' sejam \ n \ n

s/^[ \t][ \t]*$//

- se for um avanço de linha singular, substitua

s/([^\n])\n([^\n])/ /

isso realmente depende do seu pacote regex

    
por 23.08.2010 / 21:48
0

com o sed eu faria algo como:

sed 's/[ \t]*$//'
    
por 23.08.2010 / 21:53

Tags