Come ottenere il numero di righe di un file di grandi dimensioni, almeno 5G. l'approccio più veloce con la shell.Come ottenere il numero di riga di un file di grandi dimensioni, almeno 5G
risposta
Passaggio 1: head -n nomefile> newfile // ottiene le prime n righe in newfile, ad es. n = 5
Fase 2: Ottenere la dimensione del file enorme, una
Fase 3: Ottenere la dimensione newfile, B
Fase 4: (A/B) * n è pari a circa l'esatto conteggio delle righe
Impostare n su valori diversi, eseguiti alcune volte di più, quindi ottenere la media.
buona idea, grazie. –
Fornisce un'approssimazione * * del numero di righe nel file. Non è possibile ottenere un conteggio esatto senza leggere l'intero file in qualche modo. La stima può essere lontana se le prime righe ** n ** sono più lunghe o più corte della media. E la media dei risultati per valori variabili di ** n ** sembra strana. Il più grande ** n ** che proverai includerà i risultati per tutti i valori più piccoli. È sufficiente effettuare una singola misurazione per alcuni di grandi dimensioni ** n ** in modo migliore rispetto all'approccio mediano suggerito. In ogni caso, i commenti sulla mia risposta indicano che 'wc -l' richiede circa 90 secondi. –
L'approccio più rapido è probabilmente wc -l
.
Il comando wc
è ottimizzato per fare esattamente questo genere di cose. È molto improbabile che qualsiasi altra cosa tu possa fare (oltre a farlo su hardware più potente) sarà più veloce.
Sì, il conteggio delle righe in un file di testo da 5 gigabyte è lento. È un grosso file.
L'unica alternativa sarebbe quella di memorizzare i dati in un formato diverso in primo luogo, forse un database, forse un file con record a lunghezza fissa. Convertire il tuo file di testo da 5 gigabyte in un altro formato sta per prendere almeno come errato di wc -l
su di esso, ma è che valga la pena se stai andando a contare molto le linee. È impossibile dire quali sono i compromessi senza ulteriori informazioni.
Per la dimensione di un file di testo semplice, 'wc' ha impiegato un tempo relativamente breve alla prima chiamata per quel file e ~ 2 secondi per le chiamate successive con lo stesso file come input. –
La memorizzazione della cache del file la prima volta spiega questo, vedere il commento di @Ivella qui: http://stackoverflow.com/a/12716620/1959808 –
@johntex: Cosa intendi per "relativamente poco tempo"? –
- 1. File JSON di grandi dimensioni
- 2. Come organizzare file di grandi dimensioni?
- 3. Modifica di un file di grandi dimensioni in Scala
- 4. Timeout durante il caricamento di un file di grandi dimensioni?
- 5. Come posso elaborare un file di grandi dimensioni tramite CSVParser?
- 6. File di grandi dimensioni e hashing - preoccupazione
- 7. Come posso dividere file di grandi dimensioni?
- 8. Modifica di una singola riga in un file di testo di grandi dimensioni
- 9. Come gestire un set di dati di grandi dimensioni con JPA (o almeno con Hibernate)?
- 10. Caricamenti di file di grandi dimensioni
- 11. Leggere file di grandi dimensioni in Java
- 12. Come posso sostituire la prima riga di un file di grandi dimensioni in Java?
- 13. Elaborazione di file xlsx di grandi dimensioni
- 14. Elaborazione di file xml di grandi dimensioni
- 15. CodeIgniter Caricamento di file di grandi dimensioni
- 16. Come calcolare il numero di occorrenze al minuto per un set di dati di grandi dimensioni
- 17. PDFbox caricamento di file di grandi dimensioni
- 18. Caricamento file di grandi dimensioni con WebSocket
- 19. Lettura di una riga casuale da un file di testo di grandi dimensioni
- 20. modo efficiente per ottenere il massimo di ogni riga per matrice sparse di grandi dimensioni
- 21. Trova stringhe duplicate in un file di grandi dimensioni
- 22. Apertura Un file JSON di grandi dimensioni in Python
- 23. file-filereader api su file di grandi dimensioni
- 24. C# ricerca di file di testo di grandi dimensioni
- 25. Leggere un singolo byte dal file di grandi dimensioni
- 26. ClientAbortException: java.io.IOException durante il caricamento di file di grandi dimensioni
- 27. Oracle: caricamento di un file xml di grandi dimensioni?
- 28. È pericoloso avere un file di utilità di grandi dimensioni?
- 29. Ottenere il numero di riga corrente?
- 30. Leggi file di grandi dimensioni in parallelo?
cosa c'è di sbagliato con 'wc -l'? –
il problema è troppo lento ... –
http://www.codinghorror.com/blog/2007/09/everything-is-fast-for-small-n.html –