Notepad++ necesidad de crear saltos de línea con variante de condición

Resuelto
Lyne -  
maclesglyne Mensajes publicados 11 Estado Membre -
Hola a todos,

tengo un archivo con comandos, cada comando comienza con " seguido de 5 números y el símbolo de cierre del comillas.
Ejemplo de la escritura de un comando "32564".
tengo LF al final de cada línea pero un comando puede ocupar una línea, dos líneas o tres líneas.
Por lo tanto, me gustaría tener un código que me permita decir que cada vez que veas 5 números entre comillas, pongas un salto de línea en la línea anterior.
Esto me permitiría tener un salto de línea entre cada comando y consolidarlos en Excel.

gracias a todos
Céline

5 réponses

jee pee Mensajes publicados 31912 Fecha de registro   Estado Modérateur Última intervención   9 947
 
Hola,

intentar reemplazar
^("[0-9][0-9][0-9][0-9][0-9]")$
por
\n\1
con la expresión regular marcada

también podríamos hacerlo con
^("\d{5}")$
para 5 dígitos

0
Lyne
 
¡Ya un gran gracias por la respuesta :) :) :)

No funcionó
Puse en la zona de búsqueda
^("[0-9][0-9][0-9][0-9][0-9]")$
Puse en la zona de reemplazar
\n\1
que es el código para salto de línea :)

Después puse en la zona de búsqueda
^("\d{5}")$

Lo mismo, marcando expresión regular... pero no encuentra ninguna ocurrencia

Además, como hay códigos postales dentro también rodeados de comillas, necesita que la hipótesis esté realmente al inicio de la línea (un poco como la fórmula esnum asociada a la izquierda en Excel

Intenté en Excel pero es demasiado complejo a menos que se pase por VB... y VB está lejos para mí :)
0
jee pee Mensajes publicados 31912 Fecha de registro   Estado Modérateur Última intervención   9 947 > Lyne
 
Aquí hay un ejemplo antes/reemplazar/después donde funciona


El ^ significa al inicio de la línea y el $ fin de línea, por lo que solo tomamos líneas con 7 caracteres "nnnnn"

Puede que sea el separador de líneas del archivo, es cr+lf o lf

Sería necesario poner algunas líneas en una respuesta en el foro, pero mejor un archivo de ejemplo en un sitio de depósito como cjoint.fr
0
jee pee Mensajes publicados 31912 Fecha de registro   Estado Modérateur Última intervención   9 947 > jee pee Mensajes publicados 31912 Fecha de registro   Estado Modérateur Última intervención  
 
es necesario que no haya nada detrás de "nnnnn", ¡sin espacios!

o entonces quita el $
0
maclesglyne Mensajes publicados 11 Estado Membre > jee pee Mensajes publicados 31912 Fecha de registro   Estado Modérateur Última intervención  
 
eso tampoco funciona :(
0
maclesglyne Mensajes publicados 11 Estado Membre > jee pee Mensajes publicados 31912 Fecha de registro   Estado Modérateur Última intervención  
 
he puesto el archivo en cijoint
[moderación]
no sé si puedes abrirlo
0
jee pee Mensajes publicados 31912 Fecha de registro   Estado Modérateur Última intervención   9 947
 
Seguramente es posible prescindir de este paso. En Excel podríamos imaginar una columna con una fórmula que determina si es una fila de encabezado o detalle
=SI(ET(EXTRAE(A1;1;1)="""";ESNUM(CNUM(EXTRAE(A1;2;5)));
EXTRAE(A1;7;1)="""");"Encabezado";"Detalle")


0
maclesglyne Mensajes publicados 11 Estado Membre
 
Hola de nuevo,
disculpa por la respuesta tardía, pero he tenido un problema familiar.
Muchas gracias por tu ayuda :)

Entonces, en Excel, el csv no hay comillas " " que rodeen el número de pedido
por lo tanto, quizás pueda decirle que si comienza con 5 números, entonces... pero no encuentro nada en los foros.
0
jee pee Mensajes publicados 31912 Fecha de registro   Estado Modérateur Última intervención   9 947
 
Tu archivo .csv si quieres explotarlo con la coma como separador de campos, debes cambiarle el nombre a .txt
lanzar excel, archivo/abrir el .txt
decir archivo con separador, seleccionar la coma. Así tendrás columnas.

Para diferenciar la línea de encabezado y la línea siguiente, añades una columna vacía en A, y en A2 pones la siguiente fórmula
=SI(ESNUM(CNUM(B2));"Encabezado";"******")
que duplicas en todas las líneas subsecuentes.
0
maclesglyne Mensajes publicados 11 Estado Membre
 
Ah sí, gran idea... ¡funciona! Sin embargo, solo tengo una objeción con este método
Ves, en Notepad la ventaja que tenía antes (había CR + LF cuando era un salto de línea después de cada comando y un LF cuando el comando se dividía en varias líneas).
Así que utilizaba la búsqueda y reemplazo (copiaba el LF y lo reemplazaba por nada), de este modo mi CSV se organizaba automáticamente con una línea por comando y pasaba por Excel. Usaba la función convertir por separador de comas y... ¡en dos clics tenía mi archivo utilizable!

Ahora, con tu solución (que ya es genial, gracias :)),
una vez que las líneas estén diferenciadas entre encabezado y las líneas subsiguientes, ¿tendrías una forma de que se coloquen una tras otra automáticamente? Porque cuando proceso un mes completo puedo tener de 5 a 6000 líneas en Excel... manualmente me va a costar mucho...
0
jee pee Mensajes publicados 31912 Fecha de registro   Estado Modérateur Última intervención   9 947
 
Para procesar tu archivo, hay que proceder por pasos:
añadir delante del n° de cde
^("\d{5}")
una cadena improbable
#XYZ#XYZ#\1
.
eliminar todos los LF
\n
por nada .
reemplazar
#XYZ#XYZ#
por CRLF
\r\n
.

0
maclesglyne Mensajes publicados 11 Estado Membre
 
¡Eres MÁGICO!

¡Funciona!....
Muchas gracias Jee Pee...
¡Una hermosa espina en el pie! :):):):):):)
0