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
..............................