Junte linhas divididas com caracteres específicos no final da linha

Junte linhas divididas com caracteres específicos no final da linha

Eu tenho que juntar duas linhas. Um deles tem ponta final igual ao anterior no exemplo de texto inteiro:

line1:hello
line2:goodbye.

Eu preciso mudar para:

line1: hello goodbye.

Tenho que remover cada terceira linha (múltiplos de 3, como 3,6,9,12,15,18,21,... linhas) deste texto enorme.

Isso é o que eu quero fazer.

Primeira tarefa:

  • verifique cada linha

  • se terminar com um ponto final, .vá para a próxima linha,

  • se não terminar com ponto final, .junte a próxima linha à linha atual.

Cada linha não possui etiqueta de número de linha, elas começam com palavras normais.

Segunda tarefa

  • desde o início, cada terceira linha é lixo e deve ser removida

  • a primeira tarefa também deve ser feita porque em algumas partes a 3ª frase é dividida em 2 linhas, então primeiro tenho que juntar completamente a linha que se dividiu em 2 linhas depois executo a segunda tarefa.

Eu uso o Windows 7. Posso usar o notepad ++ e o ultraedit

Responder1

Primeira tarefaEu faria no Notepad ++, usando pesquisa e substituição de expressões regulares:

  • Abra "Pesquisar" > "Substituir..."
  • Como "Encontre o quê:", digite "([^\.])\r\n"(sem as aspas)
    • Significado do Regex: Encontre uma linha que termine com algo diferente de "."
    • Nota: Se o documento tiver terminações de arquivo Linux, você deverá usar apenas "\n" em vez de "\r\n".
  • Como "Substituir por:", insira "\1 "(sem as aspas; certifique-se de copiar também o espaço após "\1")
  • Em "Modo de pesquisa", selecione "Expressão regular"
  • Clique em "Substituir tudo"

Entrada:

hello
goodbye.
hello
hello
goodbye.
hello.
goodbye.

Saída:

hello goodbye.
hello hello goodbye.
hello.
goodbye.

Osegunda tarefapode ser feito com um regex ainda mais longo:

  • Abra "Pesquisar" > "Substituir..."
  • Como "Encontre o quê:", digite "(([^\r\n]*\r\n){2})[^\r\n]*\r\n"(sem as aspas)
    • Significado do Regex: Encontre um bloco de três linhas.
    • Nota: Novamente, se o documento tiver terminações de arquivo Linux, você deverá usar apenas "\n" em vez de "\r\n".
  • Como "Substituir por:", insira "\1"(sem as aspas)
  • Em "Modo de pesquisa", selecione "Expressão regular"
  • Clique em "Substituir tudo"

Entrada:

hello goodbye.
hello hello goodbye.
sdlfj sdgf.
hello.
goodbye.
(/%&/$&=)?)=´?&%.
goodbye goodbye.
bye.
sldfjsdökl.
hello.

Saída:

hello goodbye.
hello hello goodbye.
hello.
goodbye.
goodbye goodbye.
bye.
hello.

Observação: Em ambos os exemplos, presumi que não há espaços em branco à direita. Se houver, você precisará removê-lo primeiro, por exemplo, substituindo regex (como acima) "\s*$"por ""(sem as aspas).

informação relacionada