2011-05-29 15:05:02 +0000 2011-05-29 15:05:02 +0000
221
221
Advertisement

Borrar todas las líneas en el Bloc de notas++ excepto las líneas que contienen una palabra que necesito?

Advertisement

Tengo un archivo de texto y quiero mantener las líneas que empiezan por <Path>, y borrar todas las demás líneas.

¿Cómo puedo hacerlo?

Advertisement

Respuestas (10)

315
315
315
2011-06-03 20:23:06 +0000

Hay una forma fácil de lograrlo. Necesitas realizar 2 pasos.

  1. Ir al menú de búsqueda > Encontrar… > Selecciona la pestaña “Marcar”. 3. Activar las expresiones regulares. 3. Busca ^<Path> (^ es para la línea de inicio). No olvide marcar “Marcar líneas” y pulse “Marcar todo”

  2. Ir al menú “Buscar - Marcar - Eliminar líneas no marcadas”

67
67
67
2013-02-27 16:03:51 +0000

Esto puede hacerse en dos pasos a partir del 6.3. Creo que se puede hacer antes de eso, ya que tenía 5,9 cuando lo intenté por primera vez.

Usando el poste de Stema como base de esta respuesta. Ahora hay un paso menos. Marcar las líneas y eliminar las líneas no marcadas. Hecho. Siguen las instrucciones detalladas.

  1. Menú de búsqueda “Encontrar”. En el diálogo de búsqueda, haga clic en la pestaña “Marcar”. 2. Active las expresiones regulares. 3. Busque ^<Path> (^ es para el inicio de la línea). No olvide marcar “Marcar líneas” y pulse “Marcar todo”

2.

30
Advertisement
30
30
2013-07-08 16:51:09 +0000

Limpia la solución de sólo regex

Variante de dos pasos

  1. regex reemplazar

  2. reemplazar

Variante de un solo paso

Use ^(?!<Path>).*\r\n para reemplazar los fósforos con la cuerda vacía. La versión generalizada sería ^(?!.*?test).*\r\n. Esto no eliminará la línea vacía al final del archivo. Todas las demás líneas se eliminan, incluyendo varias líneas vacías consecutivas._

Explicación:

  1. (?!) es una búsqueda negativa. ^.*test.*$ selecciona toda la línea que contiene el texto solicitado.

  2. [\r\n]{2,} coincide con cualquier \r\n que se produzca más de una vez que ésta sea la nueva línea de Windows. si tiene Linux u otro sistema operativo puede que tenga que jugar con esto. la segunda es reemplazarla con una línea de retorno.

5
5
5
2015-12-17 11:43:30 +0000

Me parece que la forma más fácil es usar la función “Encontrar todo en el documento actual” y luego copiar los resultados en un nuevo archivo o seleccionar todo y reemplazarlo en el actual.

Esto encontraría todas las líneas que contienen su texto y las listaría en la parte inferior. Sólo tiene que hacer clic con el botón derecho del ratón en el resultado de la búsqueda y copiar / pegar.

4
Advertisement
4
4
2013-06-21 16:36:49 +0000

Buscar “^Path” (^ es para la línea de inicio).

Haga clic en el botón “Find all in Current Document”.

La ventana “Find result” aparecerá con todas las líneas del patrón. Selecciona copiar/pegarlas a una nueva pestaña en el Bloc de Notas++.

En esta nueva pestaña, tienes que: menú Búsqueda ———> Reemplazar… ———> Activar las expresiones regulares.

En el campo “Encontrar qué:”, usa el patrón: “Línea \d+: ”. Deje el campo “Reemplazar con:” en blanco.

Haga clic en el botón “Reemplazar todo”.

3
3
3
2011-05-30 01:02:36 +0000

Siempre que realmente quieras hacer coincidir <Path> y no una ruta de sistema de archivos, puedes probar esto desde una línea de comandos usando Perl:

perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt

Funcionó con Strawberry Perl en Windows, así que ajusta en consecuencia si los resultados no son los que esperas.

3
Advertisement
3
3
2011-05-29 18:07:54 +0000

Es torpe, pero cópialo todo a Excel , y luego usa =IF(LEFT(A1,6)="<Path>",A1,"") y copia esa fórmula hasta el final. Luego copie eso de vuelta a Notepad++. No es ideal, pero es bastante fácil (si tienes Excel). Advertencia: No funcionará bien con líneas sangrantes (Excel desplazará las columnas, etc.).

2
2
2
2011-05-30 03:00:09 +0000

No hay una forma fácil de hacer lo que quieres con Notepad++. Necesitarás descargar un programa a tu computadora o escribir algo en VB (asumo que estás en Windows).

Puedes hacer lo que quieras de una de dos maneras con sed. La utilidad sed es una de las favoritas de *nix y puede ser encontrada para Windows por la gran gente de GnuWin http://gnuwin32.sourceforge.net/packages/sed.htm ). Descargaría este programa, y luego ejecutaría su comando desde la línea de comandos.

Borrar todas las líneas que no contengan : sed -i '/^<PATH>/!d' file

Imprimir todas las líneas que contengan a un nuevo archivo: sed -n '/^<PATH>/p' file > newfile

Sugiero que use imprimir las líneas que desee a un nuevo archivo. La razón de esto es que probablemente no obtendrás la declaración regex por primera vez. La utilidad sed usa la sintaxis básica de la expresión regular (ver la referencia en http://www.regular-expressions.info/reference.html ). Si es algo como una ruta *nix (/var/www) entonces necesitarás escapar el carácter / para que tu regex funcione.

Ejemplo: sed -n '/^\/var\/www/p' file > newfile Esto imprimirá todas las líneas que empiecen por ‘/var/www’. Si hubiera archivado para escapar el carácter /, entonces el comando habría arrojado un error. Puedes escapar de un carácter especial (como /) con la barra invertida.

1
Advertisement
1
1
2018-05-01 14:37:57 +0000

Mejor solución con regex reemplazar:

(?!^.*SOMETEXT.*$)^.+\r?\n

Y reemplazar con nada

0
0
0
2011-05-29 15:16:28 +0000

Use Search->Replace e introduzca una expresión regular como ^[^].* y reemplace todo con una cadena vacía usando Regular expression. El siguiente paso es encontrar líneas vacías buscando \n\n reemplazando con \n usando Extended varias veces hasta 0 occurrences were found. (usa \r\n\r\n y \r\n dependiendo del formato del archivo). Si tienes muchas líneas vacías en una fila, es más rápido usar \n\n\n\n\n\n\n o incluso más \n:s en la cadena de búsqueda.

Advertisement
Advertisement