O Notepad ++ encontra e substitui a string por uma nova linha

212

Considere o cenário em que você tem uma sequência específica que deseja localizar e substituir. Você deseja substituí-lo por uma nova sequência que contenha um caractere de nova linha (ou sequência de caracteres).

abc123 xyz456-blah
fsafd23 xyz456-green
89hjkf23 xyz456-red
afdsa23 xyz456-yellow
abaac123 xyz456-orange

No cenário acima, gostaria de encontrar " xyz" e substituir o espaço por um retorno de carro / nova linha.

Os resultados seriam parecidos com:

abc123
xyz456-blah
fsafd23
xyz456-green
89hjkf23
xyz456-red
   ︙

etc ...

Pergunta: Como você conseguiria isso mais facilmente usando o Notepad ++? Existem outras ferramentas que você sugeriria para executar facilmente este comando?

p.campbell
fonte

Respostas:

279

O Notepad ++ funcionará perfeitamente.

Seqüência de pesquisa:

 xyz
Observe o espaço na frente de xyz.

Substituir string:

\ r \ nxyz

Você também precisará definir o "Modo de pesquisa" como "Estendido" (caixa de grupo inferior esquerda na caixa de diálogo Substituir ) para que o Notepad ++ respeite os códigos de escape.


Alguns antecedentes: "\ r \ n" é o código de escape para retorno de carro, o padrão para novas linhas no Windows. Os sistemas no estilo Unix usam simplesmente \ n (nova linha). A maioria dos IDEs, incluindo o Notepad ++, entenderá os dois estilos e os retratará com novas linhas, mas os principais utilitários do Windows não entendem \ n como sendo equivalentes a \ r \ n, portanto, este último geralmente é o mais apropriado se o arquivo tiver a intenção de ser usado em ambientes Windows.

caliban
fonte
2
\ r \ n = sintaxe de nova linha do Windows. No entanto, para tudo que não seja o bloco de notas antigo, ele aceitará apenas \ n para uma nova linha (que também é mais convencional).
Macha
3
Sua frase "mais convencional" é enganosa. "\ r \ n" é o padrão no Windows. Acontece que muitos editores e IDEs reconhecem a linha padrão Unix / Linux finalizando "\ n" e exibem o documento de acordo. Não há nada sobre "\ n" que o torne mais convencional.
Brian Lacy
Para ser sincero, a versão Win / DOS faz mais sentido para mim. "\ r" significa "Retorno de carro, ou 'Retorna o carro / cursor para o início da linha'" e "\ n" significa "Avançar o carro / cursor para frente uma linha". Claro, o Unix veio 20 anos antes, então eu acho que nesse sentido é a Microsoft que quebrou o padrão.
Brian Lacy
7
isso não funcionará, a menos que você defina o modo de pesquisa, conforme especificado na outra resposta: superuser.com/questions/34451/…
codeulike
7
Se você está tentando substituir a string literal "\ r \ n" por uma nova linha real, eu tenho que fazer o seguinte: definir o modo de pesquisa como normal, encontre / substitua \ r \ n por ***. Em seguida, defina o modo de pesquisa como Estendido, localize / substitua *** por \ r \ n.
Goku_da_master 28/05
61

No Notepad ++, é muito fácil ...

  • Pesquisar: xyz
  • Substitua por: \ n


  • Modo de pesquisa: estendido (\ n, \ t, etc)

O truque é definir o modo de pesquisa.

th3dude
fonte
11
Esta resposta funcionou para mim, o aceito não. Ver 5.8.6
bdwakefield
Sim mesmo aqui a resposta aceita não especificou usando o modo estendido ..
Andy
Por que não \r\n(em vez de \n)?
Peter Mortensen
5

Eu trapaceio um pouco quando caracteres S & Ring que não consigo digitar diretamente nos campos de texto (por exemplo, guias e novas linhas). Localize em algum lugar do documento que já tenha esse caractere, copie-o e cole-o no campo de substituição.

Portanto, no seu exemplo, comece no início de uma linha, clique, arraste até o final da linha anterior, copie-a e cole-a na caixa de diálogo Substituir.

Macha
fonte
5

Na caixa de diálogo "Substituir", verifique se, em Modo de pesquisa, você selecionou "Estendido". Em seguida, digite na caixa de localização, digite "xyz" e substitua por "\ n".

tj111
fonte
11
Por que não \r\n(em vez de \n)?
Peter Mortensen
2

No Notepad ++, altere o modo de pesquisa para Estendido e, no campo Substituir por , use \ n .

dlux
fonte
11
Por que não \r\n(em vez de \n)?
Peter Mortensen