Necesito dividir un .txt archivo en otros más pequeños que contengan 100 líneas cada uno, incluido el encabezado. No sé si esto es relevante, pero el archivo original está delimitado así:
COLUMN1 | COLUMN2 | COLUMN3
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9
Necesito que todos los archivos generados a partir de esta división tengan la línea de encabezado. Además, deben generarse o moverse a otro directorio y seguir un patrón de nombre, como file_01.txt , file_02.txt , etc.
Respuesta aceptada:
Con gnu split podría guardar el encabezado en una variable y luego split comenzando desde la segunda línea, usando el --filter opción para escribir el encabezado primero y luego las 99 líneas para cada pieza y también especificar el directorio de salida (por ejemplo, path to/output dir/ ):
header=$(head -n 1 infile.txt)
export header
tail -n +2 infile.txt | split -l 99 -d --additional-suffix=.txt
--filter='{ printf %s\n "$header"; cat; } >path to/output dir/$FILE' - file_
esto creará piezas de 100 líneas como
path to/output dir/file_01.txt
path to/output dir/file_02.txt
path to/output dir/file_03.txt
..............................