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).