Extraer primera y última línea por lotes
Resuelto
Mael730
Mensajes publicados
50
Estado
Miembro
-
Mael730 Mensajes publicados 50 Estado Miembro -
Mael730 Mensajes publicados 50 Estado Miembro -
Bonjour,
Aquí está tu problema, tengo un archivo .txt del cual quiero extraer la primera y la última línea para copiarlas en otro archivo .txt:
4.136377E+00 -2.000195E+00 6.000000E+00
4.136230E+00 -2.000146E+00 7.000000E+00
4.135986E+00 -2.000232E+00 8.000000E+00
4.135889E+00 -2.000177E+00 9.000000E+00
4.135742E+00 -2.000171E+00 1.000000E+01
.
.
.
4.135156E+00 -2.000140E+00 1.400000E+01
4.135010E+00 -2.000183E+00 1.500000E+01
4.134766E+00 -2.000134E+00 1.600000E+01
4.134766E+00 -2.000232E+00 1.700000E+01
Así que quiero:
4.136377E+00 -2.000195E+00 6.000000E+00
4.134766E+00 -2.000232E+00 1.700000E+01
Así que pensé en findstr, pero como en la primera y la última línea no hay datos que se distingan de las otras líneas, no sé cómo proceder??
P.D: batch obligatorio!!
Aquí está tu problema, tengo un archivo .txt del cual quiero extraer la primera y la última línea para copiarlas en otro archivo .txt:
4.136377E+00 -2.000195E+00 6.000000E+00
4.136230E+00 -2.000146E+00 7.000000E+00
4.135986E+00 -2.000232E+00 8.000000E+00
4.135889E+00 -2.000177E+00 9.000000E+00
4.135742E+00 -2.000171E+00 1.000000E+01
.
.
.
4.135156E+00 -2.000140E+00 1.400000E+01
4.135010E+00 -2.000183E+00 1.500000E+01
4.134766E+00 -2.000134E+00 1.600000E+01
4.134766E+00 -2.000232E+00 1.700000E+01
Así que quiero:
4.136377E+00 -2.000195E+00 6.000000E+00
4.134766E+00 -2.000232E+00 1.700000E+01
Así que pensé en findstr, pero como en la primera y la última línea no hay datos que se distingan de las otras líneas, no sé cómo proceder??
P.D: batch obligatorio!!
Configuración: Windows XP Firefox 3.5.3
5 respuestas
-
hola
@echo off set c=1 setlocal enableDelayedExpansion for /f "delims=" %%a in ('type fichier.txt') do ( if !c! EQU 1 echo %%a set /a c+=1 set d=%%a ) echo %d%-
-
-
Il faut 2 boucles, une qui trouve les noms des fichiers, l'autre, imbriquée dans la première qui lit les fichiers :
@echo off setlocal enableDelayedExpansion for /f "delims=" %%f in ('dir /b/s *.txt') do ( set E=%%~pf set c=1 for /f "delims=" %%a in ('type "%%f"') do ( if !c! EQU 1 echo %%a >> "!E!resultat.txt" set /a c+=1 set d=%%a ) echo !d! >> "!E!resultat.txt" ) -
-
Il faut refaire une boucle pour n'afficher que la première ligne du findstr
@echo off setlocal enableDelayedExpansion for /f "delims=" %%f in ('dir /b/s *.txt') do ( set E=%%~pf set c=1 for /f "delims=" %%x in ('findstr "^[0-9]" "%%f"') do ( if !c! EQU 1 echo %%x >> "!E!resultat.txt" set /a c+=1 ) for /f "delims=" %%a in ('type "%%f"') do set d=%%a echo !d! >> "!E!resultat.txt" )
-
-
Si estás en Linux, puedes usar los comandos head y tail:
touch toto # primera línea head --lines=1 archivo.txt >> toto # última línea tail --lines=1 archivo.txt >> toto
--
ubuntu 9.04 -
¡Ups, confundí batch (DOS) y bash (Linux)... tal vez tail y head existen en DOS!
--
ubuntu 9.04 -
mmmhhh
¿quién dijo que Linux es complicado? ;)
PD: perdón por la contaminación del post
--
ubuntu 9.04 -
demasiado fácil en Linux, hay todas las herramientas :-) ...también se puede hacer en un solo comando con awk
awk 'NR==1{print $0};END{print $0}' < archivo.txt