Del en tekstfil i halv (eller en prosentandel) på Ubuntu Linux
Hvis du har en ubrukt tekstfil som du prøver å behandle, kan det hende at delingen i seksjoner hjelper til med å behandle tid, spesielt hvis vi skulle importere en fil til et regneark. Eller du vil kanskje bare hente et bestemt sett med linjer fra en fil.
Skriv delt, wc, hale, katt og grep. (ikke glem sed og awk). Linux inneholder et rikt sett med verktøy for å jobbe med tekstfiler på kommandolinjen. For vår oppgave i dag bruker vi split og wc.
Først tar vi en titt på vår loggfil ... .
> ls-l
-rw-r-r-1 thegeek ggroup 42046520 2006-09-19 11:42 access.log
Vi ser at filstørrelsen er 42 MB. Det er ganske stort ... men hvor mange linjer har vi å gjøre med? Hvis vi ønsket å importere dette til Excel, ville vi måtte beholde det under 65k linjer.
La oss sjekke mengden linjer i filen ved hjelp av wc-verktøyet, som står for "ordtelling".
> wc -l access.log
146330 access.log
Vi er langt over grensen vår. Vi må dele dette inn i 3 segmenter. Vi bruker splittverktøyet til å gjøre dette.
> splitt -l 60000 access.log
> ls-ltotalt 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
Vi har nå delt våre tekstfiler i 3 separate filer, hver med mindre enn 60000 linjer, som virket som et godt nummer å velge. Den siste filen inneholder restbeløpet. Hvis du skulle klippe denne filen i halv, ville du ha gjort dette:
> split -l 73165 access.log
Og det er alt der er til det.