Borrar todas las líneas en el Bloc de notas++ excepto las líneas que contienen una palabra que necesito?
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?
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?
Hay una forma fácil de lograrlo. Necesitas realizar 2 pasos.
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”
Ir al menú “Buscar - Marcar - Eliminar líneas no marcadas”
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.
^<Path>
(^
es para el inicio de la línea). No olvide marcar “Marcar líneas” y pulse “Marcar todo” 2.
regex reemplazar
reemplazar
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._
(?!)
es una búsqueda negativa. ^.*test.*$
selecciona toda la línea que contiene el texto solicitado.
[\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.
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.
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”.
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.
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.).
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.
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.