Digamos que tiene el siguiente texto:
abc
123
abc
456
789
abc
abc
Quiero eliminar todas las líneas "abc" y conservar una. No me importa ordenar. El resultado debería ser así:
abc
123
456
789
fuente
Digamos que tiene el siguiente texto:
abc
123
abc
456
789
abc
abc
Quiero eliminar todas las líneas "abc" y conservar una. No me importa ordenar. El resultado debería ser así:
abc
123
456
789
Ordene las líneas alfabéticamente, si aún no lo están, y siga estos pasos:
(según esta pregunta relacionada: ¿Cómo puedo encontrar y eliminar líneas duplicadas de un archivo usando Expresiones regulares? )
Control+F
Alternar "Modo de reemplazo"
Alternar "Usar expresión regular" (el icono con el .*
símbolo)
En el campo de búsqueda , escriba^(.*)(\n\1)+$
En el campo " reemplazar por ", escriba$1
En este caso, recurra a una solución fuera de VS Code (consulte aquí ) o, si su documento no es muy grande y no le importa enviar spam al botón Reemplazar todo, siga los pasos anteriores, pero en los pasos 4 y 5, ingrese estos:
(basado en Eliminar líneas duplicadas específicas sin ordenar )
Precaución: Bloques para archivos con demasiadas líneas (1000+); puede hacer que VS Code falle; puede introducir líneas en blanco en algunos casos.
buscar :((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?
reemplazar con :$1
y luego haga clic en el botón "Reemplazar todo" tantas veces como ocurrencias duplicadas .
Sabrá que es suficiente cuando el recuento de líneas deje de disminuir al hacer clic en el botón. Navega hasta la última línea del documento para vigilarlo.
((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?
hizo que mi vscode se bloqueara ... Hice una búsqueda en un archivo de 229 líneas. :(^(.*)(\n\1)+$
. Después de eliminar las filas duplicadas, quiero ver todas las filas con la primera columna duplicada en el csv y quiero modificar la expresión regular.\r?
bit de la otra respuesta no es realmente necesario.Aquí hay una extensión muy interesante: Transformer
caracteristicas:
Para eliminar líneas duplicadas:
Elimina líneas duplicadas del documento
Opera en la selección o el bloque actual si no hay selección
No he jugado mucho con él además del comando "Líneas únicas", pero parece bastante bien hecho (¡incluido el intento de una grabadora de macros!).
fuente
Para agregar a la respuesta de @ Marc.2377.
Si el orden es importante y no le importa mantener la última de las líneas duplicadas, simplemente busque la siguiente expresión regular si solo desea eliminar las líneas duplicadas no vacías
Si también desea eliminar las líneas vacías duplicadas, utilice en
*
lugar de+
y reemplazar con nada.
Esto tomará una línea e intentará encontrar más adelante (tal vez 0) líneas seguidas de exactamente la misma línea tomada. Eliminará la línea tomada.
Esta es solo una expresión regular de una sola vez. No es necesario enviar spam al botón Reemplazar.
fuente
^(.+\n)(?=(?:.*\n)*?\1)
lugar, lo recomiendo porque su expresión regular eliminó una línea vacía donde no se esperaba. Voto a favor de todos modos.xxx(?=…)
es una coincidencia anticipada. Por lo tanto, se asegura de que lo que sigue a "xxx" coincida con "…", pero no avanza en la búsqueda.(?:…)
es solo un paréntesis que no cuenta en el recuento de paréntesis..*\n
es un patrón para una línea (posiblemente vacía).*
significa que puede haber varias líneas, incluso ninguna. El?
después del asterisco (*
) significa que queremos la menor cantidad de líneas posible. Como\1
sigue a esta expresión, el efecto es que miramos hacia adelante para todas las líneas que no coinciden\1
hasta que encontramos una línea que coincida\1
. Espero que esto lo aclare.Acabo de tener el mismo problema y encontré el paquete de código de Visual Studio "Ordenar líneas". Consulte el mercado de Visual Studio Code para obtener más detalles (por ejemplo, ordenar líneas ).
Este paquete tiene la opción "Clasificar líneas (únicas)", que lo hizo por mí. Cuide los espacios en blanco al principio / final de las líneas. Influyen en si las líneas se consideran únicas o no.
fuente
Instale la extensión DupChecker , presioneF1 y escriba "Comprobar duplicados".
Verificará si hay duplicados y le preguntará si desea eliminarlos.
fuente
Intente buscar y reemplazar con una expresión regular .
Encontrar:
^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$
Reemplazar:
$1$2
Es posible introducir alguna variación en el primer grupo.
fuente
No en Visual Studio Code, pero si funciona, funciona.
No es la mejor respuesta, como especificó Visual Studio Code, pero como dije: si funciona, funciona :)
fuente