¿Cómo reordenar columnas delimitadas por tuberías en Notepad ++?


8

Estoy tratando de reposicionar cada línea en un archivo .txt de la siguiente manera a continuación. Sin embargo, no tengo idea de cómo hacerlo. ¿Es esto posible con Notepad ++?

De
apple
| apple123@aol.com | orange aplery| celery@aol.com |
sandwich de col|sandwich@aol.com|turkey

A
apple|orange|apple123@aol.com
celery|cabbage|celery@aol.com
sandwich|turkey|sandwich@aol.com


Acabo de encontrar esto, que ni siquiera sabía antes, pero parece súper útil: edite columnas en Notepad ++ con el complemento
TextFX

No llamaría a esto "líneas de reposicionamiento".
Carreras de ligereza en órbita el

Respuestas:


15

Reordenar columnas en un archivo de texto

Sí, esto es posible dentro de Vanilla Notepad++, aunque como se señaló, también hay complementos que lo harán. Un enfoque mejor (más robusto) podría ser utilizar algunas herramientas de procesamiento de texto de línea de comandos, pero si necesita una solución rápida y sucia, puede encontrarla a continuación:

Suponiendo su entrada exacta ( col1|col2|col3, delimitador de tubería, sin tubería col2):

Encuentra :(.*?)\|(.*?)\|(.*)

Reemplazar :\1|\3|\2

funciona para mí aquí Notepad++, construido en enero de 2015. Algo brutal, pero funciona.

Explicación:

.* - coincide con cualquier carácter (excepto nueva línea), entre cero e ilimitado veces

.*?- coincide con cualquier personaje (excepto la nueva línea) como arriba, de una manera no codiciosa (es decir, coincide lo menos posible )

(.*)- los corchetes indican el grupo de captura de arriba (para usar en Reemplazar como \1, por ejemplo \2, \3etc.)

\|- \escapa pipe ( |) para que coincida literalmente

\1|\3|\2- imprimir el primer grupo coincidente, tubería, tercer grupo coincidente, tubería, segundo grupo coincidente


Es un placer, me alegro de que te haya ayudado y espero que ayude a otros :-) No es necesario, pero también puedes hacer clic en la marca de verificación para aceptar una respuesta si resuelve tu problema: eres libre de no hacerlo, o para esperar mejores respuestas adicionales también!
bertieb

¿No necesita hacer lo .*no codicioso, es decir, .*?para evitar muchos retrocesos?
Ex Umbris

@ExUmbris: generalmente la optimización comienza cuando la velocidad parece inadecuada
nperson325681

OTOH escribir deliberadamente una consulta subóptima por no escribir un ?personaje parece una tontería.
ligereza corre en órbita el

1
(.*?)|(.*?)|(.*)funciona para mi.
Shaz
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.