Ayuda con cat, grep, more o lo que sea (bash)

Daniel Serpell daniel en atmlab.utfsm.cl
Mar Jun 1 19:16:22 CLT 2004


El Tue, Jun 01, 2004 at 06:39:11PM -0400, Alvaro Herrera escribio:
> On Tue, Jun 01, 2004 at 05:49:02PM -0400, Daniel Serpell wrote:
> 
> > Es posible hacerlo más eficiente con "dd", pero se
> > complica mucho la línea de comandos :-)
> 
> Hum, y como harias eso?  No veo como decirle a dd que separe por lineas.
> 

Hice algunas pruebas, pero resultó más lento:

  dd if=<nombre_de_archivo> cbs=256 conv=block obs=256 | dd bs=256 cbs=256 conv=unblock  skip=<línea_a_seleccionar> count=1

El primer "dd" transforma el archivo a campos de largo fijo,
el segundo selecciona un campo.

> Pero con awk es mucho mas facil:
> 
> LINE=200
> awk "{ if (NR == $LINE) { print \$0; exit } else { print \$0 } }" archivo
> 

Si, pero se tipea demasiado :-)

Mediciones de tiempo, archivo de 25.5MB, 551325 líneas, extraer la
línea 550000, promedio de 4 corridas

head/tail :  0.35 segundos
awk       :  0.55 segundos
sed       :  0.34 segundos
dd        :  3.50 segundos

Como dato, wc -l demora 0.15 segundos.

    Daniel.



Más información sobre la lista de distribución Linux