Encuentra CRLF en Notepad ++


316

¿Cómo puedo encontrar / reemplazar todos los caracteres CR / LF en Notepad ++?

Estoy buscando algo equivalente al carácter especial ^ p en Microsoft Word.


Solo para construir un poco sobre lo que 'thenonhacker' estaba mencionando. Usamos ULtraEdit-32 en el trabajo, y al trabajar con archivos EDI (x.12), a menudo tenemos que ajustar o desenvolver datos. Las 2 cadenas de búsqueda y reemplazo más comunes son "^ p" y "~". ir en un sentido reemplazará el "~" con un CR / LF para facilitar la lectura de cada segmento. En el otro sentido, el archivo vuelve al formato que necesita el traductor EDI. Para la gente perezosa como yo, solo tengo esos mapas asignados a teclas para facilitar su uso.
DavidGrove

1
Aunque no está relacionado, pero es útil. Visité esta página después de buscar un método para convertir un archivo de texto UNIX al formato de Windows en Windows. Esto es lo que hice y trabajé CTRL+H, seleccione "Modo de búsqueda: Expresión regular". "Buscar qué: $" y "Reemplazar con: \ r". Copie y pegue el contenido en el Bloc de notas o guárdelo en el disco.
Guru

2
¡Hurra! Notepad ++ 6.0 trae el soporte de PCRE: regex como [\r\n]+ahora funciona. ¡He actualizado mi respuesta y lo celebraré!
VonC

@VonC: Supongo que también necesito actualizar todas mis respuestas [notepad ++] :)
BoltClock

Respuestas:


412

[\r\n]+ debería funcionar también

Actualización 26 de marzo de 2012, fecha de lanzamiento de Notepad ++ 6.0 :

Dios mío, en realidad funciona ahora!

PCRE regexp en Notepad ++


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

En realidad no, no parece funcionar con regexp ...

Pero si tiene Notepad ++ 5.x, puede usar el modo de búsqueda ' extendido ' y buscar \r\n. Eso sí encuentra todo tu CRLF.

(Me doy cuenta de que esta es la misma respuesta que las otras, pero nuevamente, el 'modo extendido' solo está disponible con Notepad ++ 4.9, 5.xy más)


Desde abril de 2009, tiene un artículo wiki en el sitio Notepad ++ sobre este tema:
" Cómo reemplazar los extremos de línea, cambiando así el diseño de la línea ".
(mencionado por georgiecasey en su respuesta a continuación )

Algunos extractos relevantes incluyen los siguientes procesos de búsqueda:

Búsqueda simple ( Ctrl+ F), Modo de búsqueda =Normal

Puede seleccionar un EOLen la ventana de edición.

  • Simplemente mueva el cursor al final de la línea y escriba Shift+ RightFlecha.
  • o, para seleccionar EOLcon el mouse, comience justo al final de la línea y arrastre hasta el inicio de la siguiente línea; arrastrar a la derecha de la EOLno funcionará. Puede copiarlo manualmente EOLy pegarlo en el campo para archivos Unix ( LF-solo).

Búsqueda simple (Ctrl + F), Modo de búsqueda = Extendido

La opción "Extendida" muestra \ny \rcomo caracteres que podrían coincidir.
Al igual que con el modo de búsqueda Normal, Notepad ++ busca el carácter exacto.
La búsqueda \ren un archivo de formato UNIX no encontrará nada, pero la búsqueda sí lo \nhará. Del mismo modo, un archivo en formato Macintosh contendrá \rpero no \n.

Búsqueda simple (Ctrl + F), Modo de búsqueda = Expresión regular

Las expresiones regulares usan los caracteres ^y $para anclar la cadena de coincidencia al principio o al final de la línea. Por ejemplo, la búsqueda return;$encontrará casos de "retorno"; que ocurre sin texto posterior en esa misma línea. Los caracteres de anclaje funcionan de manera idéntica en todos los formatos de archivo.
Los '.' el metacarácter de punto no coincide con las terminaciones de línea.

[Probado en Notepad ++ 5.8.5]: una búsqueda de expresión regular con un explícito \ro \nno funciona (contrario a la documentación de Scintilla ) .
Tampoco se realiza una búsqueda en un LF explícito (pegado) o en los caracteres EOL (invisibles) colocados en el campo cuando se selecciona un EOL. Búsqueda avanzada ( Ctrl+ R) sin expresiones regulares

Ctrl+ Minsertará algo que coincida con las nuevas líneas. Serán reemplazados por la cadena de reemplazo.
Recomiendo este método como el más confiable, a menos que realmente necesite usar regex.
Como ejemplo, para eliminar cada segunda línea nueva en un archivo a doble espacio, ingrese Ctrl+ Mdos veces en el cuadro de cadena de búsqueda y una vez en el cuadro de cadena de reemplazo.

Búsqueda avanzada ( Ctrl+ R) con Regexp.

Ni Ctrl+ M, $ni \r\nestán emparejados.


La misma wiki también menciona la alternativa del editor Hex :

  • Escriba la nueva cadena al comienzo del documento.
  • Luego seleccione para ver el documento en modo Hex .
  • Seleccione una de las nuevas líneas y presione Ctrl+ H.
  • Mientras tiene el cuadro de diálogo Reemplazar, seleccione en el fondo la nueva cadena de reemplazo y Ctrl+ Ccópiela para pegarla en Reemplazar con entrada de texto.
  • Luego Reemplace o Reemplace todo como desee.

Nota: el carácter seleccionado para la nueva línea generalmente aparece como 0a.
Puede tener un valor diferente si el archivo está en formato de Windows. En ese caso, siempre puede ir a Edit -> EOL Conversion -> Convert to Unix Format, y después del reemplazo, vuelva a encenderlo Edit -> EOL Conversion -> Convert to Windows Format.


1
Estaba ejecutando v 4.7. Actualizado a la versión más reciente y el modo extendido funciona como se anuncia. Gracias a todos los que respondieron.
polara

+1: estaba ejecutando 4.6 y tuve un problema similar. Y gracias a su respuesta, me actualicé a 5+. ¡Gracias!
paercebal

¡Funciona! Pero esto hace que Notepad ++ RegExp sea una mierda. UltraEdit-32 es más inteligente, solo necesita \ ny ha terminado su trabajo ...
thenonhacker

\ r \ n funcionó para mí, pero no \ n, lo cual es un poco contra-intuitivo si eres un desarrollador que está acostumbrado a \ n ser abreviado para \ r \ n.
Warren P

2
@GarretWilson confirmo que [^\r]\nfunciona bien (búsqueda de expresiones
VonC

22

Parece que esta es una pregunta frecuente , y la resolución ofrecida es:

Búsqueda simple (Ctrl + H) sin regexp

Puede activar Ver / Mostrar fin de línea o Ver / Mostrar todo, y seleccionar los caracteres de nueva línea ahora visibles. Luego, cuando inicie el comando, algunos caracteres que coincidan con el carácter de nueva línea se pegarán en el campo de búsqueda. Las coincidencias serán reemplazadas por la cadena de reemplazo, a diferencia del modo regex.

Nota 1: si los selecciona con el mouse, comience justo antes de ellos y arrastre hasta el inicio de la línea siguiente. Arrastrar hasta el final de la línea no funcionará.

Nota 2: no puede copiarlos y pegarlos en el campo usted mismo.

Búsqueda avanzada (Ctrl + R) sin regexp

Ctrl + M insertará algo que coincida con las nuevas líneas. Serán reemplazados por la cadena de reemplazo.


2
También puede usar Ctrl + M para insertar nuevas líneas en la cadena de reemplazo.
Dusty Campbell

2
Es una pregunta frecuente porque se trata de una verruga de diseño en un producto que de otro modo sería brillante.
Warren P

11

En el cuadro de diálogo Reemplazar, desea establecer el modo de búsqueda en "Extendido". Los modos de expresión normal o regular no funcionarán.

Luego, solo busque "\ r \ n" (o simplemente \ n para archivos Unix o simplemente \ r para archivos de formato mac) y configure el reemplazo para lo que desee.


Esta respuesta no estaba actualizada cuando se escribió: Mac no ha estado usando \rdesde 2001 ... (ahora es unix)
Jasper

9

No he tenido mucha suerte con \ r \ n expresiones regulares desde la ventana buscar / reemplazar.

Sin embargo, esto funciona en Notepad ++ v4.1.2:

  1. Use el menú "Ver | Mostrar fin de línea" para habilitar la visualización de los caracteres de fin de línea. (Los avances de línea de retorno de carro deberían aparecer como un 'carácter' CRLF sombreado).

  2. Seleccione uno de los 'caracteres' CRLF (coloque el cursor justo en frente de uno, mantenga presionada la tecla MAYÚS y luego presione la tecla CURSOR DERECHO una vez).

  3. Copie el carácter CRLF en el portapapeles.

  4. Asegúrese de no tener abierto el cuadro de diálogo buscar o buscar / reemplazar.

  5. Abra el cuadro de diálogo buscar / reemplazar. El campo 'Buscar qué' muestra el contenido del portapapeles: en este caso, el carácter CRLF, que aparece como 2 'caracteres de cuadro' (¿presumiblemente es un carácter no imprimible?)

  6. Asegúrese de que la opción 'Expresión regular' esté DESACTIVADA.

Ahora debería poder contar, buscar o reemplazar según lo desee.



4

La forma en que encontré que funciona es usando la función Reemplazar, y usando "\ n", con el modo "Extendido". Estoy usando la versión 5.8.5.


1
Uno de los pocos elementos en esta página que funciona. Usando notepadd ++ 5.8.6. Es realmente difícil de creer que algo tan simple requiera la cantidad de respuestas demasiado complejas y, a menudo, que no funcionan que se ha dado en este hilo.
Andrew S

4

En 2013, v6.13 o posterior, use:

Menú EditarConversión EOLFormato de Windows .


Esto no cubre el caso general de reemplazar CRLF con uno o más caracteres arbitrarios. O reemplazar uno o más caracteres arbitrarios con CRLF (por ejemplo, reemplazar caracteres de espacio con CRLF).
Peter Mortensen

2

Suponiendo que tiene una búsqueda de "expresiones regulares", busque \ r \ n. Prefiero \ r? \ N, porque algunos archivos no usan retornos de carro.

EDITAR: Gracias por los comentarios, quien haya votado en contra. He aprendido que ... bueno, nada, porque no proporcionaste comentarios. ¿Por qué está mal esto?


1
No estoy seguro exactamente por qué no funciona, pero no funciona. Supongo que esta implementación de expresiones regulares (en Notepad ++) solo verifica una sola línea a la vez e ignora los nuevos caracteres de línea. Probablemente por eso fue rechazado.
Frank Hadder

1
Sí. regex es línea por línea en notepad ++, por lo que puede hacer coincidir posicionalmente en EOL con $ pero no puede buscar / reemplazar expresiones que crucen los límites de la línea.
Warren P

2

Use la opción de búsqueda avanzada ( Ctrl+ R) y use el método abreviado de teclado para CRLF ( Ctrl+ M) para insertar un retorno de carro.


Ctrl + R no funcionó para mí cuando lo probé. Insertó un extraño carácter de control en el documento, " DC2". Notepad ++ versión: 7.5.6 (2018-05-19).
Peter Mortensen

2

Si necesita hacer un reemplazo complejo de expresiones regulares que incluye \ r \ n, puede solucionar la limitación mediante un enfoque de tres pasos:

  1. Reemplace todo \r\npor una etiqueta, digamos #GO#→ Marque 'Extendido', reemplace \r\npor#GO#
  2. Realice su regexp, por ejemplo, eliminando multilínea ICON="*"de los marcadores html → Verifique regexp, reemplaceICON=.[^"]+.> by >
  3. Vuelva a colocar \ r \ n → Marque 'Extendido', reemplace #GO#por\r\n


1

Haz esta configuración. Menú-> Ver-> Mostrar símbolo-> desmarque Mostrar fin de línea


1
Esto no responde a la pregunta original. Explique por qué cree que esta es una contribución útil a estas preguntas y respuestas. Lea también las páginas del centro de ayuda sobre cómo hacer respuestas útiles.
AdrianHHH

1

Abrí el archivo en Notepad ++ e hice un reemplazo en unos pocos pasos:

  1. Reemplace todos "\ r \ n" con "\ r \ n"
  2. Reemplace todo "; \ r \ n" con "\ r \ n"
  3. Reemplace todos "\ r \ n" con ""

Esto pone todos los saltos donde deberían estar y elimina los que están rompiendo el archivo.

Funcionó para mi.


1

No pude hacer esto en NP v6.9. Lo encontré bastante fácil en Msoft Word (2K).

Abra el documento, vaya a editar-> reemplazar.

Luego, en la parte inferior del cuadro de búsqueda, haga clic en "más", luego busque el botón "Especial" y tienen varias cosas para usted. Para el estilo Dos, usé el "párrafo". Este es un par de cr en ventanas de tierra.


0

Simplemente haga un \ r con un hallazgo y reemplace con un espacio en blanco en el campo de reemplazo para que todo vaya a una línea. Luego busque y reemplace (en mi caso por punto y coma) y reemplace con; \ n

:) -T y C


1
Esto es diferente de las respuestas existentes, ¿cómo?
Todos los trabajadores son esenciales

0

Para cambiar un documento de líneas separadas en una sola línea, con cada línea formando una entrada en una lista separada por comas:

  1. ctrl+ fpara abrir la búsqueda / sustituto.
  2. Haga clic en la pestaña "Reemplazar".
  3. Rellene la entrada "Buscar qué" con " \r\n".
  4. Rellene la entrada "Reemplazar con" con " ," o " , " (según la preferencia).
  5. Desmarca la casilla de verificación "Hacer coincidir toda la palabra" (el bit importante que elude la lógica)
  6. Marque el botón de radio "Extendido".
  7. Haga clic en el botón "Reemplazar todo".

Estos pasos se convierten, por ejemplo

foo bar

bar baz

baz foo

dentro:

foo bar, bar baz, baz foo

o: (según preferencia)

foo bar, bar baz, baz foo


0

Tal vez pueda usar los complementos de TextFX

En TextFX, vaya a editar textfx → eliminar líneas en blanco


0

Para encontrar cualquier tipo de secuencia de salto de línea, use la siguiente construcción de expresiones regulares:

\R

Para buscar y seleccionar consecutivos secuencias de salto de línea, añadir +después \R: \R+.

Asegúrese de activar el modo de expresión regular :

ingrese la descripción de la imagen aquí

Concuerda:

  • U+000DU+000A -Secuencia 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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.