GNU/Linux >> Linux Esercitazione >  >> Linux

unix - divide un enorme file .gz per riga

pipe per dividere usa gunzip -c o zcat per aprire il file

gunzip -c bigfile.gz | split -l 400000

Aggiungi le specifiche di output al comando split.


Il modo migliore per farlo dipende da ciò che desideri:

  • Vuoi estrarre una singola parte del file di grandi dimensioni?
  • O vuoi creare tutte le parti in una volta sola?

Se desideri una singola parte del file , la tua idea di usare gunzip e head è giusto. Puoi usare:

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

Ciò genererebbe le prime 4000000 righe su standard out:probabilmente vorrai aggiungere un'altra pipe per fare effettivamente qualcosa con i dati.

Per ottenere le altre parti, devi usare una combinazione di head e tail , come:

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

per ottenere il secondo blocco.

Forse fare una serie di questi è una soluzione o il gunzip richiederebbe spazio sufficiente per decomprimere l'intero file

No, il gunzip -c non richiede spazio su disco:fa tutto in memoria, quindi lo trasmette a stdout.

Se vuoi creare tutte le parti in una volta sola , è più efficiente crearli tutti con un singolo comando, perché in tal caso il file di input viene letto solo una volta. Una buona soluzione è usare split; vedi la risposta di jim mcnamara per i dettagli.


Dato che stai lavorando su uno stream (non riavvolgibile), ti consigliamo di utilizzare la forma "+N" della coda per ottenere le righe che iniziano dalla riga N in poi.

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. Modifica la data di creazione del file

  2. Come dividere un file e mantenere la prima riga in ciascuno dei pezzi?

  3. unix - conteggio delle colonne nel file

  4. Come ottenere i primi n caratteri di ogni riga nel file di dati unix

  5. Ansible decommentare la riga nel file

Come dividere un file di grandi dimensioni in parti a numeri di riga dati

Come convertire un file Windows in un file UNIX

Comando AWK in Linux/Unix

Esercitazione Unix Sed:stampa di righe di file utilizzando l'indirizzo e i modelli

Tutorial Unix Sed:aggiungi, inserisci, sostituisci e conta righe di file

Tutorial Unix Sed:operazione su file multilinea con 6 esempi pratici