GNU/Linux >> Znalost Linux >  >> Linux

unix - rozdělte velký soubor .gz po řádcích

roura k rozdělení použijte k otevření souboru buď gunzip -c nebo zcat

gunzip -c bigfile.gz | split -l 400000

Přidejte výstupní specifikace k příkazu split.


Jak to nejlépe udělat, závisí na tom, co chcete:

  • Chcete extrahovat jednu část velkého souboru?
  • Nebo chcete vytvořit všechny části najednou?

Pokud chcete jednu část souboru , váš nápad použít gunzip a head má pravdu. Můžete použít:

gunzip -c hugefile.txt.gz | head -n 4000000

To by znamenalo výstup prvních 4000000 řádků na standardní výstup – pravděpodobně budete chtít připojit další rouru, abyste s daty skutečně něco udělali.

Chcete-li získat další části, použijte kombinaci head a tail , jako:

gunzip -c hugefile.txt.gz | head -n 8000000 |tail -n 4000000

získat druhý blok.

Je možná řešením provedení série těchto akcí nebo by gunzip -vyžadoval dostatek místa pro rozbalení celého souboru

Ne, gunzip -c nevyžaduje žádné místo na disku – vše dělá v paměti a pak to streamuje do stdout.

Pokud chcete vytvořit všechny díly najednou , je efektivnější vytvořit je všechny jediným příkazem, protože pak se vstupní soubor čte pouze jednou. Jedním dobrým řešením je použít split; podrobnosti naleznete v odpovědi jima mcnamara.


Když pracujete na (nepřevinutelném) streamu, budete chtít použít tvar „+N“ pro získání řádků začínajících od řádku N výše.

zcat hugefile.txt.gz | head -n 40000000
zcat hugefile.txt.gz | tail -n +40000001 | head -n 40000000
zcat hugefile.txt.gz | tail -n +80000001 | head -n 40000000

Linux
  1. Rychlý unixový příkaz pro zobrazení konkrétních řádků uprostřed souboru?

  2. Změnit datum vytvoření souboru

  3. Jak rozdělit soubor a zachovat první řádek v každém z kusů?

  1. unix - hlava A konec souboru

  2. unix - počet sloupců v souboru

  3. Jak získat prvních n znaků každého řádku v unixovém datovém souboru

  1. Jak rozdělit a kombinovat soubory z příkazového řádku v Linuxu

  2. Kočičí čára X do čáry Y na obrovském souboru?

  3. Možnost odkomentování řádku v souboru