¿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>
command-line
cat
vonhogen
fuente
fuente
wc -l $1 | awk '{print $1}'
; lineno =expr $lineno - $2
; cola -n $ lineno $ 1; }tail -n
La forma más obvia es
tail
. La sintaxis puede ser ligeramente diferente según el sistema operativo que esté utilizando:Si no puede ir
tail
a trabajar, puede usarlosed
, pero puede terminar más lento:fuente
tail
funcionó 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).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.El -1000 enumerará continuamente el texto de hasta 1000 líneas; puede cambiar esto según sea necesario. El
sed
comando cortará las primeras 4 líneas de salida, que fueron insertadas automáticamente pormore
, 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.fuente
Puede usar el parámetro NR con el comando awk :
fuente
cat messages | awk '{if (NR>=7000 && NR <7003) print}'
muestra solo las filas 7000, 7001 y 7002.cola +250
Más información sobre el comando Unix Cat
fuente
tail
sugerencia es la misma que la aceptada y otras respuestas de hace semanas. ¿Por qué molestarse en publicar?...can't find the server at www.scripterworld.com.