Splits een tekstbestand in tweeën (of een willekeurig percentage) op Ubuntu Linux
Als u een onoverzichtelijk tekstbestand hebt dat u probeert te verwerken, kan het splitsen in secties soms de verwerkingstijd helpen, vooral als we een bestand in een spreadsheet zouden importeren. Of misschien wilt u gewoon een bepaalde reeks regels uit een bestand ophalen.
Ga naar split, wc, tail, cat en grep. (vergeet sed en awk niet). Linux bevat een uitgebreide reeks hulpprogramma's voor het werken met tekstbestanden op de opdrachtregel. Voor onze taak vandaag zullen we split en wc gebruiken.
Eerst nemen we een kijkje in ons logbestand ... .
> ls -l
-rw-r-r- 1 thegeek ggroup 42046520 2006-09-19 11:42 access.log
We zien dat de bestandsgrootte 42 MB is. Dat is nogal groot ... maar met hoeveel regels hebben we te maken? Als we dit in Excel wilden importeren, zouden we het minder dan 65.000 regels moeten houden.
Laten we het aantal regels in het bestand controleren met behulp van het hulpprogramma wc, wat staat voor "aantal woorden".
> wc -l access.log
146330 access.log
We zijn ver boven onze limiet. We moeten dit opsplitsen in 3 segmenten. We zullen het splitprogramma gebruiken om dit te doen.
> split -l 60000 access.log
> ls -ltotaal 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
We hebben onze tekstbestanden nu opgesplitst in 3 afzonderlijke bestanden, die elk minder dan 60000 regels bevatten, wat een goed aantal leek om te kiezen. Het laatste bestand bevat het overgebleven bedrag. Als je dit specifieke bestand in tweeën zou knippen, zou je dit gedaan hebben:
> split -l 73165 access.log
En dat is alles wat er is.