Estoy buscando un software de Windows que pueda eliminar líneas en archivos de texto después de una línea específica.
Por ejemplo, un archivo contiene 5 líneas. Quiero eliminar líneas después de la tercera línea. ver:
Line 1
Line 2
Line 3
xxxxxx
xxxxxx1
Aquí, quiero mantener las primeras 3 líneas (línea 1, línea 2, línea 3) y eliminar las 2 líneas restantes (xxxxxx, xxxxxx1) y guardar automáticamente ese archivo de texto. Quiero hacer esto con varios archivos de texto. Quiere eliminar cada línea después de la tercera línea en cada archivo de texto dentro de una carpeta.
¿Algún software de Windows para esto?
GnuWin es capaz de hacerlo, por ejemplo sed
. En la línea de comando, escriba
for %f in ("*.txt") do C:\...\sed -i "1,3!d" "%f"
El for
comando es parte de la línea de comandos de Windows. %f
define una variable para contener el nombre del archivo. in ("*.txt")
define qué archivos procesar. do C:\...\sed
le dice a Windows que ejecute un comando.
-i
realizará la operación en el lugar, es decir, escribirá en el mismo archivo. 1,3
define un rango de líneas, !
elige todas las demás líneas, d
las elimina y "%f"
pasa el archivo a procesar a SED, para que sepa qué archivo procesar.
GnuWin se ejecuta en Windows y es gratuito.
-i.bak
which creará una copia de seguridad de todos los archivos antes de cambiarlos (con la extensión .bak).Esto se puede hacer sin instalar software, sino creando un simple script por lotes. Aquí hay un script que hará lo que quieras:
@echo off > NEWFILE & setLocal enableDELAYedeXpansioN
set/p D=delete all after what line?
set N=
:main
for /f "tokens=* delims= " %%a in (file.txt) do (
set/a N+=1
if !N! leq !D! echo.%%a
) >> NEWFILE
¿Dónde file.txt
está el archivo real? Cuando ejecute este script, le preguntará qué línea eliminar después, simplemente diga 3
. Copie el código anterior y péguelo en un .bat
archivo.
Hay muchas maneras de hacer esto utilizando las herramientas básicas de Unix/Linux.
Recomiendo usar awk en tu caso. Para ejecutar awk en Windows, puede usar un puerto de Windows de awk .
Mi experiencia personal es que vale la pena aprender rápidamente si tiene que procesar texto de vez en cuando.
Tomás
usuario3548321
Tomás