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

Resuelto
Lyne -  
maclesglyne Mensajes publicados 11 Estado Miembro -
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 respuestas

  1. jee pee Mensajes publicados 31966 Fecha de registro   Estado Moderador Última intervención   10 010
     
    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
    1. 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
    2. jee pee Mensajes publicados 31966 Fecha de registro   Estado Moderador Última intervención   10 010 > 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
    3. jee pee Mensajes publicados 31966 Fecha de registro   Estado Moderador Última intervención   10 010 > jee pee Mensajes publicados 31966 Fecha de registro   Estado Moderador Última intervención  
       
      es necesario que no haya nada detrás de "nnnnn", ¡sin espacios!

      o entonces quita el $
      0
    4. maclesglyne Mensajes publicados 11 Estado Miembro > jee pee Mensajes publicados 31966 Fecha de registro   Estado Moderador Última intervención  
       
      eso tampoco funciona :(
      0
    5. maclesglyne Mensajes publicados 11 Estado Miembro > jee pee Mensajes publicados 31966 Fecha de registro   Estado Moderador Última intervención  
       
      he puesto el archivo en cijoint
      [moderación]
      no sé si puedes abrirlo
      0
  2. jee pee Mensajes publicados 31966 Fecha de registro   Estado Moderador Última intervención   10 010
     
    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
  3. maclesglyne Mensajes publicados 11 Estado Miembro
     
    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
    1. jee pee Mensajes publicados 31966 Fecha de registro   Estado Moderador Última intervención   10 010
       
      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
  4. maclesglyne Mensajes publicados 11 Estado Miembro
     
    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
  5. jee pee Mensajes publicados 31966 Fecha de registro   Estado Moderador Última intervención   10 010
     
    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
    1. maclesglyne Mensajes publicados 11 Estado Miembro
       
      ¡Eres MÁGICO!

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