5 votos

eliminar líneas duplicadas sin ordenar

¿Es posible eliminar las filas duplicadas en el Bloc de notas++, dejando sólo una única aparición de una línea?

Si tengo estas líneas:
1
5
3
9

1
4
3

Quiero que lo sea:
1
5
3
9

4

Quiero que mantenga la primera línea duplicada, y elimine todas las demás líneas duplicadas... sin ordenar.

¿Podría alguien ayudarme, por favor?

Saludos cordiales

2 votos

Si tienes excel, puedes pegar los datos en excel y usar el botón "eliminar duplicado" de excel.

0 votos

4voto

Derek Ziemba Puntos 605

Los requisitos son una Regex que:

  • No ordena las líneas (descalifica TextFX).
  • Mantiene la primera ocurrencia y elimina la posterior duplicados.

Yo también tengo este problema. Hasta ahora tengo esto: ^(.*?)$\s+?^(?=.*^\1$)

  • Sólo funciona en notepad++ si activas la opción "." matches newline opción.
  • En elimina el primer ocurrencia y mantiene la posterior duplicados.

Yo solía tener un gran (pero muy lento) regex para esto que fue javascript, notepad ++, y VisualStudio encontrar y reemplazar compatible, pero lo he perdido. Si puedo averiguarlo o encontrarlo de nuevo, voy a actualizar esto.

0voto

Dana Puntos 11

Puedes hacerlo a través de TextFX Characters pligin de notepadd++ con ordenación. Siga los siguientes pasos para ello:

  1. Abre el bloc de notas++.
  2. Rellene las filas con los números que ya figuran en su consulta.
  3. Instale el plugin 'TextFX Characters' desde el menú de vista de notepad++.
  4. Pulsa Ctrl+A para seleccionar todo el contenido del bloc de notas++.
  5. Plugins > TextFx > Herramientas TextFx. Marque +Ordenar salidas sólo UNIQUE (en columna).

Pero sin clasificación es difícil o imposible hacerlo.

0voto

Toto Puntos 294
  • Ctrl + H
  • Encuentra qué: ^(.+)(\R)([\s\S]+?)\1\R?
  • Sustitúyelo por: $1$2$3
  • comprobar Envolvente
  • check Expresión regular
  • DESMARCAR . matches newline
  • Replace all

Explicación:

^               # begining of line
  (             # start group 1
    .+          # 1 or more any character but newline
  )             # end group 1
  (\R)          # group 2, any kind of linebreak
  (             # start group 3
    [\s\S]+?    # 1 or more any character, not greedy
  )             # end group 3
  \1            # same content as group 1
  \R?           # optional linebreak, to take care of last line, may be without linebreak.

Sustitución:

$1          # content of group 1
$2          # content of group 2
$3          # content of group 3

Resultado para el ejemplo dado:

1
5
3
9

4

AVISO: Tienes que pulsar Replace all tantas veces como sea necesario, no elimina todos los duplicados de una sola vez.

-1voto

Sridhar Sarugu Puntos 1

Esto puede ser más rápido que alguna de las otras respuestas:

  • Encuentra: (^.*$\r\n)\1*
  • Sustitúyelo: $1
  • Seleccione el botón de radio "Expresión regular

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X