Dividere un file di testo a metà (o qualsiasi percentuale) su Ubuntu Linux
Se hai un file di testo pesante che stai tentando di elaborare, suddividerlo in sezioni può a volte aiutare i tempi di elaborazione, specialmente se dovessimo importare un file in un foglio di calcolo. O potresti voler semplicemente recuperare un particolare insieme di linee da un file.
Inserisci split, wc, tail, cat e grep. (non dimenticare sed e awk). Linux contiene un ricco set di utility per lavorare con file di testo sulla riga di comando. Per il nostro compito oggi useremo split e wc.
Per prima cosa diamo un'occhiata al nostro file di registro ... .
> ls -l
-rw-r-r- 1 thegeek ggroup 42046520 2006-09-19 11:42 access.log
Vediamo che la dimensione del file è 42 MB. È piuttosto grande ... ma quante linee abbiamo a che fare? Se volessimo importarlo in Excel, avremmo bisogno di tenerlo a meno di 65k linee.
Controlliamo la quantità di linee nel file usando l'utility wc, che sta per "word count".
> wc -l access.log
146330 access.log
Siamo oltre il nostro limite. Dovremo dividerlo in 3 segmenti. Useremo l'utility split per farlo.
> split -l 60000 access.log
> ls -ltotale 79124
-rw-rw-r- 1 thegeek ggroup 40465200 2006-09-19 12:00 access.log
-rw-rw-r- 1 thegeek ggroup 16598163 2006-09-19 12:05 xaa
-rw-rw-r- 1 thegeek ggroup 16596545 2006-09-19 12:05 xab
-rw-rw-r- 1 thegeek ggroup 7270492 2006-09-19 12:05 xac
Ora abbiamo diviso i nostri file di testo in 3 file separati, ciascuno contenente meno di 60000 righe, che sembrava un buon numero da scegliere. L'ultimo file contiene l'importo rimanente. Se stavi per tagliare questo particolare file a metà, avresti fatto questo:
> split -l 73165 access.log
E questo è tutto ciò che c'è da fare.