No, no lo hay, los archivos no son direccionables por línea.
No existe una forma de tiempo constante para encontrar el comienzo de la línea n en un archivo de texto. Debe transmitir el archivo y contar las líneas nuevas.
Use la herramienta más simple/rápida que tenga para hacer el trabajo. Para mí, usando head
gana mucho más sentido que grep
, ya que este último es mucho más complicado. No estoy diciendo "grep
es lento", realmente no lo es, pero me sorprendería si es más rápido que head
para este caso. Eso sería un error en head
, básicamente.
con GNU-grep podrías simplemente decir
grep --context=10 ...
# print line number 52
sed -n '52p' # method 1
sed '52!d' # method 2
sed '52q;d' # method 3, efficient on large files
método 3 eficiente en archivos grandes
forma más rápida de mostrar líneas específicas
Encontré otras dos soluciones si conoce el número de línea pero nada más (no es posible grep):
Suponiendo que necesita las líneas 20 a 40,
sed -n '20,40p;41q' file_name
o
awk 'FNR>=20 && FNR<=40' file_name
Al usar sed
es más eficiente dejar de procesar después de haber impreso la última línea que continuar procesando hasta el final del archivo. Esto es especialmente importante en el caso de archivos grandes y líneas de impresión al principio. Para hacerlo, el sed
El comando anterior introduce la instrucción 41q
para detener el procesamiento después de la línea 41 porque en el ejemplo solo nos interesan las líneas 20-40. Deberá cambiar el 41 a la última línea que le interese, más una.