GNU/Linux >> Tutoriales Linux >  >> Linux

¿Comando rápido de Unix para mostrar líneas específicas en medio de un archivo?

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.


Linux
  1. Uso de Google Drive desde la línea de comandos de Linux

  2. ¿Cómo recorrer las líneas de un archivo?

  3. ¿Cómo el comando Sed '1!g;h;$!d' invierte el contenido de un archivo?

  4. Eliminación de líneas específicas de un archivo en la línea de comandos de Linux

  5. 4 herramientas para descargar cualquier archivo usando la línea de comandos en Linux

Ver el contenido de un archivo en la línea de comandos de Linux

Cómo quitar líneas de un archivo usando el comando Sed

5 comandos para ver el contenido de un archivo en la línea de comandos de Linux

Tutorial de Unix Sed:Impresión de líneas de archivos usando direcciones y patrones

Tutorial de Unix Sed:anexar, insertar, reemplazar y contar líneas de archivos

¿Cómo uso las líneas de un archivo como argumentos de un comando?