GNU/Linux >> Znalost Linux >  >> Linux

Rozdělit soubor podle počtu řádků včetně záhlaví v každém z nich?

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

Linux
  1. Jak vytisknout řádky číslo 15 a 25 z každých 50 řádků?

  2. Jak připojit více řádků k souboru?

  3. Počítat řádky v souboru?

  1. Náhodně nakreslit určitý počet řádků z datového souboru?

  2. Zapsat do souboru .txt?

  3. Jeden příkaz pro vytvoření adresáře a souboru v něm linuxový příkaz

  1. Jak rozdělit jeden textový soubor do více souborů *.txt?

  2. Výpis řádků pouze z jednoho souboru v DIFF

  3. Náhodně nakreslete určitý počet řádků z datového souboru