Împărțiți un fișier text pe jumătate (sau orice procent) pe Ubuntu Linux
Dacă aveți un fișier text greu pe care încercați să îl procesați, împărțirea acestuia în secțiuni poate ajuta uneori timpul de procesare, mai ales dacă urma să importem un fișier într-o foaie de calcul. Sau poate doriți să preluați un anumit set de linii dintr-un fișier.
Introduceți împărțit, WC, coadă, pisică și grep. (nu uitați sed și awk). Linux conține un set bogat de utilitare pentru lucrul cu fișierele text din linia de comandă. Pentru sarcina noastră de astăzi vom folosi split și WC.
Mai întâi aruncăm o privire la fișierul nostru de jurnal ... .
> ls -l
-rw-r-r- 1 thegeek grupe 42046520 2006-09-19 11:42 access.log
Vedem că dimensiunea fișierului este de 42MB. Este cam mare ... dar cu câte linii avem de-a face? Dacă vrem să importăm acest lucru în Excel, ar trebui să îl păstrăm mai puțin de 65k liniile.
Să verificăm cantitatea de linii din fișier utilizând utilitarul wc, care reprezintă "numărul de cuvinte".
> wc -l access.log
146330 access.log
Suntem peste limita noastră. Va trebui să împărțim acest lucru în 3 segmente. Vom folosi utilitarul split pentru a face asta.
> split -l 60000 access.log
> ls -ltotal 79124
-rw-rw-r- 1 thegeek grupe 40465200 2006-09-19 12:00 acces.log
-rw-rw-r- 1 thegeek grupe 16598163 2006-09-19 12:05 xaa
-rw-rw-r- 1 thegeek grupul 16596545 2006-09-19 12:05 xab
-rw-rw-r- 1 thegeek grupe 7270492 2006-09-19 12:05 xac
Acum ne-am împărțit fișierele text în trei fișiere separate, fiecare conținând mai puțin de 60000 de linii, care păreau ca un număr bun de ales. Ultimul fișier conține suma rămasă. Dacă ați fi redus acest fișier în jumătate, ați fi făcut acest lucru:
> split -l 73165 acces.log
Și asta este tot ce trebuie să fie.