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

Alvaro Herrera alvherre en dcc.uchile.cl
Mar Jun 1 19:37:06 CLT 2004


On Tue, Jun 01, 2004 at 07:16:22PM -0400, Daniel Serpell wrote:

> El Tue, Jun 01, 2004 at 06:39:11PM -0400, Alvaro Herrera escribio:

>   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.

Cool trick.


> 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

Otra alternativa, aun mas rapida si sabes que la linea esta cerca del
final, es usar wc -l para contar las lineas y luego

tac | head | tail

por ejemplo

$ wc -l archivo
73633 archivo
$ tac archivo | head -n 634 | tail -1

(para obtener la linea 73000).  Midela con tu archivo de ejemplo a ver
que tal ...

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"Estoy de acuerdo contigo en que la verdad absoluta no existe...
El problema es que la mentira sí existe y tu estás mintiendo" (G. Lama)



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