Dela en textfil i halv (eller någon procent) på Ubuntu Linux
Om du har en ojämförlig textfil som du försöker bearbeta kan det ibland hjälpa till att dela upp det i sektioner, särskilt om vi skulle importera en fil till ett kalkylblad. Eller kanske du bara hämtar en viss uppsättning linjer från en fil.
Ange split, wc, svans, katt och grep. (glöm inte sed och awk). Linux innehåller en rik uppsättning verktyg för att arbeta med textfiler på kommandoraden. För vår uppgift idag använder vi split och 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 att filstorleken är 42 MB. Det är ganska stort ... men hur många linjer hanterar vi? Om vi ville importera detta till Excel, skulle vi behöva hålla det mindre än 65k linjer.
Låt oss kolla mängden linjer i filen med hjälp av wc-verktyget, som står för "ordräkning".
> wc -l access.log
146330 access.log
Vi är långt över gränsen. Vi måste dela upp det i 3 segment. Vi använder splitverktyget för att göra detta.
> split -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 nu delat våra textfiler i 3 separata filer, var och en innehåller mindre än 60000 linjer, vilket verkade som ett bra nummer att välja. Den sista filen innehåller resterande belopp. Om du skulle skära den här filen i halv så hade du gjort det här:
> split -l 73165 access.log
Och det är allt som finns där.