Encontre o CRLF no Notepad ++

316

Como posso encontrar / substituir todos os caracteres CR / LF no Notepad ++?

Estou procurando algo equivalente ao caractere ^ p especial no Microsoft Word.

polara
fonte
Apenas para construir um pouco sobre o que 'thenonhacker' estava mencionando. Usamos o ULtraEdit-32 no trabalho e, trabalhando com arquivos EDI (x.12), geralmente precisamos quebrar ou desembrulhar dados. As duas seqüências de pesquisa e substituição mais comuns são "^ p" e "~". seguir um caminho substituirá o "~" por um CR / LF para facilitar a leitura de cada segmento. Indo para o outro lado, coloca o arquivo de volta no formato que o tradutor EDI precisa. Para pessoas preguiçosas como eu, eu apenas tenho essas chaves mapeadas para facilitar o uso.
DavidGrove
1
Embora não relacionado, mas útil. Visitei esta página depois de pesquisar um método para converter o arquivo de texto UNIX para o formato Windows no Windows. Foi o que fiz e trabalhei CTRL+H, selecione "Modo de pesquisa: Expressão regular". "Encontre o que: $" e "Substitua por: \ r". Copie e cole o conteúdo no Bloco de Notas ou salve-o em disco.
Guru
2
Yay! O Notepad ++ 6.0 traz o suporte do PCRE: regex como [\r\n]+agora funciona. Eu atualizei minha resposta e comemorarei!
VonC 26/03
@VonC: Eu acho que eu preciso atualizar todas as respostas meu [Notepad ++] , bem :)
BoltClock
Parece que ninguém mencionou a sequência de escape \R ainda que corresponde a uma nova linha genérica; isto é, qualquer coisa considerada uma seqüência linebreak ...
Bubble Bobble

Respostas:

412

[\r\n]+ deve funcionar também

Atualização em 26 de março de 2012, data de lançamento do Notepad ++ 6.0 :

OMG, ele realmente funciona agora !!!

Regexp PCRE no Notepad ++


Resposta original 2008 (Notepad ++ 4.x) - 2009-2010-2011 (Notepad ++ 5.x)

Na verdade não, parece não funcionar com regexp ...

Mas se você tiver o Notepad ++ 5.x, poderá usar o modo de pesquisa ' estendido ' e procurar \r\n. Isso encontra todo o seu CRLF.

(Eu sei que essa é a mesma resposta que as outras, mas, novamente, o 'modo estendido' está disponível apenas no Notepad ++ 4.9, 5.xe mais)


Desde abril de 2009, você tem um artigo wiki no site Notepad ++ sobre este tópico:
" Como substituir as extremidades da linha, alterando o layout da linha ".
(mencionado por georgiecasey em sua resposta abaixo )

Algumas extrações relevantes incluem os seguintes processos de pesquisa:

Pesquisa simples ( Ctrl+ F), Modo de pesquisa =Normal

Você pode selecionar um EOLna janela de edição.

  • Basta mover o cursor para o final da linha e digite Shift+ RightSeta.
  • ou, para selecionar EOLcom o mouse, inicie no final da linha e arraste para o início da próxima linha; arrastar para a direita do EOLnão funcionará. Você pode copiar EOLe colar manualmente no campo para arquivos Unix ( LFapenas).

Pesquisa simples (Ctrl + F), Modo de pesquisa = Estendido

A opção "Estendido" mostra \ne \rcomo caracteres que podem ser correspondidos.
Assim como no modo de pesquisa Normal, o Notepad ++ está procurando o caractere exato.
A pesquisa \rem um arquivo no formato UNIX não encontrará nada, mas a procura \n. Da mesma forma, um arquivo no formato Macintosh conterá, \rmas não \n.

Pesquisa simples (Ctrl + F), Modo de pesquisa = Expressão regular

Expressões regulares usam os caracteres ^e $para ancorar a sequência de correspondência no início ou no final da linha. Por exemplo, procurar return;$encontrará ocorrências de "retorno"; que ocorrem sem texto subsequente na mesma linha. Os caracteres âncora funcionam de forma idêntica em todos os formatos de arquivo.
O '.' o metacaractere de ponto não corresponde às terminações da linha.

[Testado no Notepad ++ 5.8.5]: uma pesquisa de expressão regular com um explícito \rou \nnão funciona (ao contrário da documentação do Scintilla ) .
Nem uma pesquisa em um LF explícito (colado) ou nos caracteres EOL (invisíveis) colocados no campo quando um EOL é selecionado. Pesquisa avançada ( Ctrl+ R) sem regexp

Ctrl+ Mirá inserir algo que corresponda a novas linhas. Eles serão substituídos pela sequência de substituição.
Eu recomendo esse método como o mais confiável, a menos que você realmente precise usar o regex.
Como exemplo, para remover cada segunda linha nova em um arquivo com espaço duplo, digite Ctrl+ Mduas vezes na caixa de sequência de caracteres de pesquisa e uma vez na caixa de substituição de sequência.

Pesquisa avançada ( Ctrl+ R) com Regexp.

Nem Ctrl+ M, $nem \r\nsão correspondidos.


O mesmo wiki também menciona a alternativa do editor Hex :

  • Digite a nova sequência no início do documento.
  • Em seguida, selecione para visualizar o documento no modo Hex .
  • Selecione uma das novas linhas e pressione Ctrl+ H.
  • Enquanto você tem o Substituir caixa de diálogo, selecione no fundo da nova cadeia de substituição e Ctrl+ Ccopiá-lo para colá-lo no campo Substituir por entrada de texto.
  • Em seguida, substitua ou substitua tudo como desejar.

Nota: o caractere selecionado para a nova linha geralmente aparece como 0a.
Pode ter um valor diferente se o arquivo estiver no formato Windows. Nesse caso, você sempre pode acessar e Edit -> EOL Conversion -> Convert to Unix Format, após a substituição, trocá-lo novamente e Edit -> EOL Conversion -> Convert to Windows Format.

VonC
fonte
1
Eu estava executando a v 4.7. O upgrade para a versão mais recente e o modo estendido funcionam conforme anunciado. Obrigado a todos que responderam.
polara 25/09/08
+1: eu estava executando o 4.6 e tive um problema semelhante. E, graças à sua resposta, atualizei para 5+. Obrigado!
paercebal
Funciona! Mas isso faz com que o Notepad ++ RegExp seja um saco. O UltraEdit-32 é mais inteligente, você só precisa \ n e terminou o seu trabalho ...
thenonhacker 31/03
\ r \ n funcionou para mim, mas não \ n, o que é meio contra-intuitivo se você é um desenvolvedor que está acostumado a \ n ser uma abreviação de \ r \ n.
Warren P
2
@ GarretWilson Confirmo que [^\r]\nfunciona muito bem (pesquisa regex): i.stack.imgur.com/PxZWD.png
VonC
22

Parece que este é um FAQ , e a resolução oferecida é:

Pesquisa simples (Ctrl + H) sem regexp

Você pode ativar a opção Exibir / Mostrar fim de linha ou exibir / Mostrar tudo e selecionar os caracteres de nova linha agora visíveis. Então, quando você iniciar o comando, alguns caracteres correspondentes ao caractere de nova linha serão colados no campo de pesquisa. As correspondências serão substituídas pela sequência de substituição, diferente do modo regex.

Nota 1: Se você selecioná-los com o mouse, inicie um pouco antes deles e arraste para o início da próxima linha. Arrastar para o final da linha não funcionará.

Nota 2: Você não pode copiá-los e colá-los no campo.

Pesquisa avançada (Ctrl + R) sem regexp

Ctrl + M irá inserir algo que corresponda a novas linhas. Eles serão substituídos pela sequência de substituição.

sundar - Restabelecer Monica
fonte
2
Você pode usar Ctrl + M para inserir novas linhas na sequência de substituição também.
Dusty Campbell
2
É um FAQ, porque é um pouco de verruga de design em um produto brilhante.
Warren P
11

Na caixa de diálogo Substituir, você deseja definir o modo de pesquisa para "Estendido". Os modos de expressão normal ou regular não funcionam.

Em seguida, basta encontrar "\ r \ n" (ou apenas \ n para arquivos unix ou apenas \ r para arquivos no formato mac) e defina a substituição para o que quiser.

Nathen Silver
fonte
Essa resposta foi ultrapassada quando escrita - Mac não foi usando \rdesde 2001 ... (é unix agora)
Jasper
9

Não tive muita sorte com \ r \ n expressões regulares da janela Localizar / Substituir.

No entanto, isso funciona no Notepad ++ v4.1.2:

  1. Use o menu "Exibir | Mostrar fim de linha" para ativar a exibição de caracteres de fim de linha. (Os feeds de linha de retorno de carro devem aparecer como um único 'caractere' CRLF sombreado.)

  2. Selecione um dos 'caracteres' do CRLF (coloque o cursor na frente de um, mantenha pressionada a tecla SHIFT e pressione a tecla RIGHT CURSOR uma vez).

  3. Copie o caractere CRLF para a área de transferência.

  4. Certifique-se de que você não tem o achado ou encontrar / open de diálogo substituir.

  5. Abra a caixa de diálogo Localizar / Substituir. O campo 'Localizar' mostra o conteúdo da área de transferência: nesse caso, o caractere CRLF - que aparece como 2 'caracteres de caixa' (presumivelmente é um caractere não imprimível?)

  6. Verifique se a opção 'Expressão regular' está DESLIGADA.

Agora você deve poder contar, encontrar ou substituir conforme desejado.


fonte
6

Imagem com CRLF

insira a descrição da imagem aqui


Imagem sem CRLF

insira a descrição da imagem aqui

Arumugaraj Kuthalingam
fonte
Menu alternativo EditarMostrar símboloMostrar fim da linha .
Peter Mortensen
4

A maneira como achei que funcionava é usando a função Substituir e usando "\ n", com o modo "Estendido". Estou usando a versão 5.8.5.

Chris
fonte
1
Um dos poucos itens desta página que funciona. Usando o notepadd ++ 5.8.6. É realmente difícil de acreditar que algo simples assim exija a quantidade de respostas excessivamente complexas e muitas vezes não funcionais fornecidas neste tópico.
Andrew S
4

Em 2013, v6.13 ou posterior, use:

Menu EditarConversão de EOLFormato do Windows .

Aquarius Power
fonte
Isso não cobre o caso geral de substituir o CRLF por um ou mais caracteres arbitrários. Ou substituindo um ou mais caracteres arbitrários por CRLF (por exemplo, substituir caracteres de espaço por CRLF).
Peter Mortensen
2

Supondo que ele tenha uma pesquisa por "expressões regulares", procure \ r \ n. Eu prefiro \ r? \ N, porque alguns arquivos não usam retornos de carro.

EDIT: Obrigado pelo feedback, quem votou nisto. Aprendi isso ... bem, nada, porque você não forneceu feedback. Por que isso está errado?

Chris Marasti-Georg
fonte
1
Não sei exatamente por que não funciona, mas não funciona. Suponho que essa implementação de regex (no Notepad ++) verifique apenas uma única linha de cada vez e ignore quaisquer novos caracteres de linha. Provavelmente foi por isso que você foi rejeitado.
Hadder franco
1
Sim. regex é linha por linha no bloco de notas ++, portanto, você pode corresponder posicionalmente no EOL com $, mas não pode procurar / substituir expressões que cruzam os limites das linhas.
Warren P
2

Use a opção de pesquisa avançada ( Ctrl+ R) e use o atalho de teclado para CRLF ( Ctrl+ M) para inserir um retorno de carro.

Peter Mortensen
fonte
Ctrl + R não funcionou para mim quando tentei. Ele inseriu um caractere de controle estranho no documento " DC2". Versão do Notepad ++: 7.5.6 (19/05/2018).
Peter Mortensen
2

Se você precisar fazer uma substituição complexa de regexp, incluindo \ r \ n, poderá solucionar a limitação usando uma abordagem em três etapas:

  1. Substitua tudo \r\npor uma tag, digamos #GO#→ Marque 'Estendido', substitua \r\npor#GO#
  2. Execute sua regexp, por exemplo, removendo várias linhas ICON="*"de um marcador de html → Verifique regexp, substituaICON=.[^"]+.> by >
  3. Coloque de volta \ r \ n → Marque 'Estendido', substitua #GO#por\r\n
alex
fonte
2

Vá em Exibir -> Mostrar símbolo -> Mostrar todos os caracteres // Funcionou para mim

user2447473
fonte
1

Faça essa configuração. Menu-> Ver-> Mostrar Símbolo-> desmarque Mostrar Fim da Linha

Madhava Reddy
fonte
1
Isso não responde à pergunta original. Explique por que você acha que essa é uma contribuição útil para estas perguntas e respostas. Leia também as páginas da Central de Ajuda sobre como obter respostas úteis.
21717 AdrianHHH
1

Abri o arquivo no Notepad ++ e fiz uma substituição em algumas etapas:

  1. Substitua todos "\ r \ n" por "\ r \ n"
  2. Substitua todos "; \ r \ n" por "\ r \ n"
  3. Substitua todos "\ r \ n" por ""

Isso coloca todas as quebras onde deveriam estar e remove as que estão desmembrando o arquivo.

Funcionou para mim.

Cognis
fonte
1

Eu era totalmente incapaz de fazer isso no NP v6.9. Achei fácil no Msoft Word (2K).

Abra o documento, vá para editar-> substituir.

Em seguida, na parte inferior da caixa de pesquisa, clique em "mais" e encontre o botão "Especial" e eles têm várias coisas para você. Para o estilo Dos, usei o "parágrafo". Este é um par cr lf no windows land.

Cool Javelin
fonte
0

Basta fazer um achado e substituir por um espaço em branco no campo substituir para que tudo suba para uma linha. Em seguida, encontre e substitua (no meu caso por ponto e vírgula) e substitua por; \ n

:) -T & C

Trent
fonte
1
Isso é diferente das respostas existentes, como?
Todos os trabalhadores têm Essencial
0

Para alterar um documento de linhas separadas em uma única linha, com cada linha formando uma entrada em uma lista separada por vírgula:

  1. ctrl+ fpara abrir a pesquisa / substituto.
  2. Clique na guia "Substituir".
  3. Preencha a entrada "Localizar" com " \r\n".
  4. Preencha a entrada "Substituir por" por " ," ou " , " (dependendo da preferência).
  5. Desmarque a caixa de seleção "Corresponder palavra inteira" (o bit importante que ilude a lógica).
  6. Verifique o botão de opção "Estendida".
  7. Clique no botão "Substituir tudo".

Estes passos são, por exemplo,

foo bar

bar baz

baz foo

para dentro:

foo bar, bar baz, baz foo

ou: (dependendo da preferência)

foo bar, bar baz, baz foo

Fred Gandt
fonte
0

Talvez você possa usar plugins TextFX

No TextFX, vá para textfx edit → excluir linhas em branco

harinoir
fonte
0

Para encontrar qualquer tipo de sequência de quebra de linha, use a seguinte construção de expressão regular:

\R

Para localizar e selecionar consecutivos seqüências de quebra de linha, adicione +depois \R: \R+.

Certifique-se de ativar o modo de expressão regular :

insira a descrição da imagem aqui

Corresponde:

  • U+000DU+000A -Sequência CRLF`
  • U+000A- LINE FEED, LF
  • U+000B- LINE TABULATION, VT
  • U+000C- FORM FEED, FF
  • U+000D- CARRIAGE RETURN, CR
  • U+0085- NEXT LINE, NEL
  • U+2028 - LINE SEPARATOR
  • U+2029 - PARAGRAPH SEPARATOR
Wiktor Stribiżew
fonte