elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Duda] Extraer determinada linea de archivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Duda] Extraer determinada linea de archivo  (Leído 8,008 veces)
galmito

Desconectado Desconectado

Mensajes: 4


Ver Perfil
[Duda] Extraer determinada linea de archivo
« en: 27 Enero 2011, 16:16 pm »

Hola, mi duda es la siguiente:

¿Cómo extraer determinada linea de un archivo .txt (Da igual el formato)?
Creo que tiene que ser con una mezcla de For /F, tokens, y skip, pero no me sale  :-\

Por ejemplo, quiero extraer la linea 32 de un archivo, ¿Cómo hago?
Gracias

EDITO:
Por ejemplo tengo esto:

Código:
Hola esto es
una prueba
de extracción. xD

Y quiero sacar la linea 2 por ejemplo, para que quede asi:

Código:
una prueba

Espero haber aclarado.


« Última modificación: 27 Enero 2011, 16:32 pm por galmito » En línea

SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: [Duda] Extraer determinada linea de archivo
« Respuesta #1 en: 27 Enero 2011, 16:27 pm »

a ver, en tu idioma que significa "extraer"? con una herramienta que se llama "SED.exe" es muy manejable y puedes hacer lo que dices (supongo) y mas cosas pero ya no recuerdo como usarla bien tendria que mirarlo y aora no tengo timpo, saludos


En línea

No he vuelto, solo estoy de paso.
galmito

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: [Duda] Extraer determinada linea de archivo
« Respuesta #2 en: 27 Enero 2011, 16:30 pm »

Decía para hacerlo sin otro programa externo.  :-\
En línea

xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: [Duda] Extraer determinada linea de archivo
« Respuesta #3 en: 27 Enero 2011, 16:42 pm »

Código
  1. @echo off
  2.  
  3. set/a n_line=%1-1
  4. if %n_line% LSS 0 (exit /b -1)
  5. if %n_line% EQU 0 (call:show) else (call:show " skip=%n_line%")
  6. exit /b 0
  7.  
  8. :show
  9. for /f "tokens=*%~1" %%%% in (file.txt) do (
  10.    echo.%%~%%
  11.    goto:eof
  12. )
  13.  

Ejemplo:
Código:
C:\Users\Pablo\Desktop> script 2
una prueba

C:\Users\Pablo\Desktop>
En línea

galmito

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: [Duda] Extraer determinada linea de archivo
« Respuesta #4 en: 27 Enero 2011, 16:43 pm »

Gracias ya lo solucione así:
Código:
set /p skipes=Ingrese linea:
if %skipes%==0 FOR /F "tokens=*" %%A IN (mapa1.bat) DO (
set "var=%%A"&goto fin)
FOR /F "tokens=* skip=%skipes%" %%A IN (mapa1.bat) DO (
set "var=%%A"&goto fin)

:fin
pause>nul
En línea

xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: [Duda] Extraer determinada linea de archivo
« Respuesta #5 en: 27 Enero 2011, 16:45 pm »

De nada.

Por cierto, es mala costumbre poner varias órdenes en la misma línea con &, y es buena costumbre identar el código. :P
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [Duda] Extraer determinada linea de archivo
« Respuesta #6 en: 27 Enero 2011, 19:21 pm »

Hay una manera mucho más "sencilla":
Código
  1. @echo off
  2. for /f "tokens=2 delims=:" %%_ in ('
  3. ^(
  4. echo 2^,2l
  5. echo e
  6. ^) ^| edlin /b FILEIN.TXT
  7. ') do (echo %%_)

El problema sería el delimitador, pero en fin, si no tienes problemas con el formato de texto, puedes usar esta manera.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: [Duda] Extraer determinada linea de archivo
« Respuesta #7 en: 27 Enero 2011, 20:13 pm »

Está interesante tu solución Leo, pero en Windows 7 no tengo edlin :P
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [Duda] Extraer determinada linea de archivo
« Respuesta #8 en: 27 Enero 2011, 20:24 pm »

Está interesante tu solución Leo, pero en Windows 7 no tengo edlin :P

Mmmm, no sabía que lo habían quitado. Mmmmmm. Supongo que se habrán declinado ya por el uso de powershell.

En powershell se podría hacer algo así:

Código
  1. $line = (Get-Content Test.txt)[1]
« Última modificación: 27 Enero 2011, 20:27 pm por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: [Duda] Extraer determinada linea de archivo
« Respuesta #9 en: 27 Enero 2011, 22:16 pm »

Sí, podría quedar así el script:
Código
  1. $numero_linea = [Console]::In.ReadLine(); #Input
  2.  
  3. $numero_linea-=1;
  4. $line = (Get-Content file.txt)[$numero_linea]
  5. echo $line
  6.  
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines