524 votos

Eliminación de filas duplicadas en Notepad++

¿Es posible eliminar filas duplicadas en Notepad++, dejando solo una única aparición de una línea?

722voto

Colin Pickard Puntos 23922

Notepad++ con el complemento TextFX puede hacer esto, siempre y cuando desees ordenar por línea y eliminar las líneas duplicadas al mismo tiempo.

Para instalar el TextFX en la última versión de Notepad++ necesitas descargarlo desde aquí: https://sourceforge.net/projects/npp-plugins/files/TextFX

El complemento TextFX solía estar incluido en versiones antiguas de Notepad++, o era posible añadirlo desde el menú yendo a Plugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Install. En algunos casos también puede ser llamado TextFX Characters, pero es lo mismo.

Las casillas de verificación y botones necesarios ahora aparecerán en el menú bajo: TextFX -> TextFX Tools.

Asegúrate de que "sort outputs only unique..." esté marcado. Luego, selecciona un bloque de texto (Ctrl+A para seleccionar todo el documento). Finalmente, haz clic en "sort lines case sensitive" o "sort lines case insensitive"

diseño del menú en n++

511voto

stema Puntos 36113

Desde la versión 6 de Notepad++ puedes usar esta regex en el diálogo de búsqueda y reemplazo:

^(.*?)$\s+?^(?=.*^\1$)

y reemplazar con nada. Esto deja de todas las filas duplicadas la última aparición en el archivo.

¡No se necesita ordenar y las filas duplicadas pueden estar en cualquier lugar del archivo!

Necesitas marcar las opciones "Expresión regular" y ". coincide con nueva línea":

Diálogo de Reemplazo de Notepad++

  • ^ coincide con el inicio de la línea.

  • (.*?) coincide con cualquier caracter 0 o más veces, pero tan pocas veces como sea posible (coincide exactamente en una fila, esto es necesario por la opción ". coincide con nueva línea"). La fila coincidida se almacena, debido a los paréntesis alrededor y es accesible utilizando \1

  • $ coincide con el final de la línea.

  • \s+?^ esta parte coincide con todos los caracteres de espacio en blanco (¡nuevas líneas!) hasta el inicio de la siguiente fila ==> Esto elimina las nuevas líneas después de la fila coincidida, para que no haya ninguna fila vacía después del reemplazo.

  • (?=.*^\1$) esta es una afirmación de búsqueda hacia adelante positiva. Esta es la parte importante en esta regex, una fila solo se coincidirá (y se eliminará), cuando haya exactamente la misma fila que sigue en algún otro lugar del archivo.

75voto

Grant Peters Puntos 3718

Si las filas están inmediatamente una después de la otra, entonces puedes usar una sustitución de regex:

Patrón de búsqueda: ^(.*\r?\n)(\1)+

Reemplazar con: \1

23voto

Pablo Santa Cruz Puntos 73944

Si no te importa el orden de las filas (lo cual no creo que te importe), entonces puedes usar una caja Linux/FreeBSD/Mac OS X/Cygwin y hacer lo siguiente:

$ cat yourfile | sort | uniq > yourfile_nodups

Luego abre el archivo nuevamente en Notepad++.

14voto

eeasterly Puntos 336

Las últimas versiones de Notepad++ aparentemente no incluyen en absoluto el complemento TextFX. Para poder utilizar el complemento para ordenar/eliminar duplicados, el complemento debe ser descargado e instalado (más complicado) o agregado mediante el administrador de complementos.

A) Forma sencilla (como se describe aquí).

Plugins -> Administrador de complementos -> Mostrar administrador de complementos -> Pestaña Disponible -> TextFX Characters -> Instalar

B) Forma más compleja, si se necesita otra versión o la forma sencilla no funciona.

  1. Descargar el complemento desde SourceForge:

    http://downloads.sourceforge.net/project/npp-plugins/TextFX/TextFX%20v0.26/TextFX.v0.26.unicode.bin.zip

  2. Abrir el archivo zip y extraer NppTextFX.dll

  3. Colocar NppTextFX.dll en el directorio de complementos de Notepad++, por ejemplo:
    C:\Program Files\Notepad++\plugins

  4. Iniciar Notepad++, y TextFX será uno de los elementos del menú de archivo (como se ve en la Respuesta #1 arriba por Colin Pickard)

Después de instalar el complemento TextFX, siga las instrucciones en la Respuesta #1 para ordenar y eliminar duplicados.

También considere configurar un atajo de teclado utilizando Configuración > Mapeador de atajos si utiliza este comando con frecuencia o desea replicar un atajo de teclado, como F9 en TextPad para ordenar.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X