Gato Unix a partir de la línea

40

¿Cuál es la mejor manera de generar un archivo a partir de una línea específica (un gran número como 70000)? Algo como:

cat --line=70000 <file>
vonhogen
fuente

Respuestas:

60

Eche un vistazo a la cola, más precisamente, es --lines = + N switch:

tail --lines=+100 <file>
Svend
fuente
Guau. ¡No sabía esto incluso después de usar esto en Linux durante 8 años! Siempre usé un bash fn! Gracias ! getFromLine () {lineno = wc -l $1 | awk '{print $1}'; lineno = expr $lineno - $2; cola -n $ lineno $ 1; }
secureBadshah
2
Como nota, esto no funciona en Mountain Lion (Darwin Kernel Versión 13.1.0). La variante para Mountain lion estail -n
Kaushik Ghose
22

La forma más obvia es tail. La sintaxis puede ser ligeramente diferente según el sistema operativo que esté utilizando:

tail -n +70000

Si no puede ir taila trabajar, puede usarlo sed, pero puede terminar más lento:

sed -pe '1,69999d'
Chris Johnsen
fuente
tailfuncionó bien en MinGW (en un archivo de texto de 600 MB). El tiempo de ejecución fue de solo unos segundos (pero el archivo de entrada podría haber estado en el caché de archivos ya).
Peter Mortensen
2

Si en lugar de un número de línea necesita comenzar a enumerar en la línea que contiene un determinado $phrase, intente lo siguiente.

more -1000 +/"$phrase" yourfilename | sed '1,4d'

El -1000 enumerará continuamente el texto de hasta 1000 líneas; puede cambiar esto según sea necesario. El sedcomando cortará las primeras 4 líneas de salida, que fueron insertadas automáticamente por more, que contiene una línea en blanco, el mensaje "... omitiendo" y las dos líneas que preceden a la línea de inicio deseada. Supongo que esto puede variar dependiendo de su sistema.

AlohaUnixFan
fuente
2

Puede usar el parámetro NR con el comando awk :

cat <file> | awk '{if (NR>=7000) print}'
Gefolge
fuente
2
Puede usar este comando con otros límites. Como muestra: cat messages | awk '{if (NR>=7000 && NR <7003) print}'muestra solo las filas 7000, 7001 y 7002.
Gefolge
-1

cola +250

Más información sobre el comando Unix Cat


fuente
2
enlace fascinante, pero en realidad no proporciona ninguna información que se aplique a esta pregunta, y su tailsugerencia es la misma que la aceptada y otras respuestas de hace semanas. ¿Por qué molestarse en publicar?
quack quijote
El enlace está roto -...can't find the server at www.scripterworld.com.
Peter Mortensen