Potřebuji rozdělit .txt
soubor na menší, každý po 100 řádcích včetně záhlaví. Nevím, jestli je to relevantní, ale původní soubor je oddělen takto:
COLUMN1 | COLUMN2 | COLUMN3
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9
Potřebuji, aby každý soubor vygenerovaný z tohoto rozdělení měl řádek záhlaví. Také je třeba je vygenerovat/přesunout do jiného adresáře a podle vzoru názvu, jako je file_01.txt
, file_02.txt
, atd
Přijatá odpověď:
S gnu split
můžete uložit záhlaví do proměnné a poté split
počínaje 2. řádkem pomocí --filter
možnost napsat nejprve záhlaví a poté 99 řádků pro každý kus a také zadat výstupní adresář (např. 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_
tím se vytvoří 100řádkové kusy jako
path to/output dir/file_01.txt
path to/output dir/file_02.txt
path to/output dir/file_03.txt
..............................