Posted By: CePal () on 'CZunix'
Title:     Re: pocitani vyskytu - awk
Date:      Tue Apr 14 12:17:36 2015

Kdysi jsem potreboval to same a nejrychlejsi byl perl. Dnes by asi byl 
rychlejsi ruby on rails... Kazdopadne tohle se da vyguglit.

Potrebujes algoritmus s linearni vypocetni narocnosti (lepsi to uz byt nemuze 
diky nutnosti precist celej soubor), v nejakem interpretu, kterej umi dobre 
vyuzivat filesystem cache a kterej si umi ohlidat (pripadne mu lze naridit) 
pretekani pameti (treba WIndowsovskej Notepad nacte celej soubor do RAM, coz 
u vetsich souboru a PC s mensi RAM zpusobuje prusery zeano, podobne midnight 
commander pro listovani solid archivu rozbaluje archiv do /tmp a nekontroluje 
si, zda /tmp filesystem ma dost volne kapacity, takze at uz si prechodna data 
& cache udrzujes v jakekoliv forme, je treba ujistit se, ze nepreteces 
kapacitu, zvlast pokud to pocitas na produkcnim byznys serveru). 

CePal 

> Ahoj lidi,
> mam nasledujici libustku: velikansky soubor dat, desitky milionu radku, 
> kde se (znacne) opakuji hodnoty, a tech unikatnich hodnot neni az tak moc 
> (rekneme do tisice, vetsinou dokonce jen desitky).
> 
> Obcas potrebuju spocitat, kolik ceho tam je. Hodil by se mi tedy vypis typu 
> hodnota - count. Nejdriv jsem to bral fakt hrubou silou: 
> for i in `cat | cut | sort -u`; do cat | cut | grep | wc -l; done
> 
> To fungovalo u mensich souboru, u tech milionu a vice radek uz fakt ne. :)
> Samozrejme me opet zachranil awk, ktery to umi na "prvni dobrou", cili jeden
> 
> prujezd bez jakekoli pajpy, tzn. rychlost o nekolik radu jinde. Pokud by
> tedy 
> nekdo potreboval (hodnoty oddelene carkou a to, co me zajima, je 5.
> sloupec): 
> 
> awk -F, '{i[$5]++} END{for (j in i) print i[j], j}'
> 
> 
> Piece of cake. :) 
> 
>  
> jimo:)
>                   [ A project manager is a person who thinks
>                     nine women can deliver a baby in one month. ]
CePal

Search the boards