Bře 272013
 

Tak jsem potreboval zpracovat jeden HODNE VELKY textovy soubor.

Co myslim tim hodne velky? Cca 750 MB, coz je v 8b kodovani cca 780 milionu znaku, pri prumernych 15 znacich na radek to dela pres 50 milionu radku textu. To je HODNE. Mozna tolik, co je jeden clovek schopny precist za cely zivot.

Co myslim tim textovy soubor? Cisty text, zadne formatovani, {X,HT}ML, nic, proste text.

A co myslim tim zpracovat? V souboru se vyskytuje hlavicka (cca 6 % radku, nejakych 15 MB) s ruznymi informacemi, tu chci nechat. A pak je tam hrooomada radku ve formatu nr=“NEJAKA_HODNOTA“. Tyhle radky jsou 1) dobre rozpoznatelne (muzu pouzit nejaky filtr) a 2) vsechny u sebe (muzu je smazat blokove). A prave tyhle radky chci smazat. Na konci je jeste mala paticka, par radku ktere chci nechat.

A ted me zajimalo, jak si s tim ktery software poradi. Ukol to neni slozity, jen obrovsky svym rozsahem. Jen jeste upresnim, ze jsem to zkousel na masine s 2 GB fyzicke RAM a 3 GB mista ve swapu.

Windows

Notepad: prvni volba, ktera napadne kazdeho. Kliknu na konec posledniho radku co chci nechat, odskrolluju dolu, kliknu na konec posledniho radku co chci smazat se Shiftem, zmacknu Delete. Presne podle KISS principu (Keep It Simple, Stupid – Nech to hloupe a jednoduche). Nefunguje to. Pan Notepad mi ohlasil, ze takhle velky soubor otevrit neumi a at pouziji jiny editor. To je mi platne jak kaprovi pocketquery. Ale diky za uprimnost!

Wordpad: tenhle editor me napadl az pri psani clanku, takze jsem zatim nezkousel. Vyzkousim hned co se zase dostanu k masine s Windows a dam vedet.

OpenOffice.org: Spadly behem nacitani, aniz by daly vedet, kde je problem.

PSPad: univerzalni reseni vsech textovych problemu ve Win. Ne-e. Bohuzel. Sice se o to pokusil, ale po chvilce chroustani nahlasil, ze soubor nedokaze otevrit (nerekl proc).

Lister: ne David Lister, ale integrovany prohlizec souboru v Total Commanderu. Hezka vecicka, krasne mi soubor otevrel, ukazal, ale editovat neumi. Sorry bro…

Linux (Debian+Gnome)

gedit: standardni textovy editor v Gnome. Snazil se, snazil, do swapu me hodil. Soubor zacal otevirat, spapal 3.5 GB pameti, ukazal mi prvnich cca 40 tisic radek a pak zamrznul. Po par minutach jsem ho zabil… Mozna by to dal, zkusim to mozna jeste nekdy.

Kate: standardni textovy editor v KDE. Na zacatku totez jako Lister, nabehl, rychle mi ukazal obsah souboru, ale jenom prohlizec. Pak jsem se pokusil prepnout do editacniho modu. Snazil se, snazil, do swapu me hodil. Opet spapal spoustu pameti, ale zamrznul nez jsem ho zabil. Totez jako gedit, mozna by to casem dal, nekdy to zkusim.

vim: tak trosku hardcore reseni, ale pojdme na nej… :-) Otevreni souboru, chvilicka. /nr=“ pro vyhledani prvniho spravneho radku. Shift+v pro oznaceni zacatku bloku. Shift+g pro skok na konec souboru. Pak o par radku nahoru, a stiskneme d pro smazani. A zacal to chroupat. Nejakou pamet si vzal, ale extra moc ne, zamrznul na par minut a nakonec to dokazal! Po chvilce odmrznul a ukazal spravny vysledek. Takze mame prvniho finalistu.

grep: Pro nekoho mozna podobny hardcore jako vim, pro me krasne, ciste a pohodlne reseni. grep -v ‘nr=“[A-Z]‘ longfile.txt > shortfile.txt a je to. Trvalo mu to nejakou minutu, ale mene nez vimu. Navic prakticky s nulovou spotrebou pameti.

Vysledek

Zpracovavat nejaka velka data na Winech nejde. Zpracovavat velka data na Linuxu jde, ale s GUI aplikaci to muze trvat veky. V konzoli je to za chvili. Jestli mate radi regularni vyrazy, nebo spis preferujete tisic klavesovych zkratek, je to na vas. Kazdopadne zahodte Winy a nebojte se konzole :-)

P.S. Ne, nevim ty vimovske zkratky z hlavy, naprosto sproste jsem pouzil cheat-sheet :-)

P.P.S.: Samozrejme jsem si na to mohl napsat program, ale to neni o co mi slo. Ale mozna nekdy udelam presne casove mereni a zahrnu svuj soft, pro srovnani…