Van valami egyszerű GNU utility amivel kulcs szerint összegezhetők egész számok? Perlben, awk-ban meg tudom csinálni, csak macerás. Valami olyasmit keresek mint számlálásra a "uniq -c". Minél egyszerűbb, annál jobb.
Például:
Bemenet:
11780 httpd
11552 httpd
1400 crond
Kimenet:
23332 httpd
1400 crond
- 5573 megtekintés
Hozzászólások
gugli nem segített maradt a csúnya perl-es megoldás
ps -eo size,comm | perl -e '$h{(split)[1]}+=(split)[0] while <>; print map "$_ $h{$_}\n", sort {$h{$a} <=> $h{$b}} keys %h;'
- A hozzászóláshoz be kell jelentkezni
tényleg kell egyszerűbb mint az awk?
awk -e '{declare v[$2];v[$2]+=$1;}END{for(k in v)print k" "v[k];}'
- A hozzászóláshoz be kell jelentkezni
Melyik awk implementációnak van szüksége -e-re, declare parancsra, és blokk utolsó parancsát lezáró pontosvesszőre?
Eddig még mindaz, amivel találkoztam, ette volna ezt röviden:
awk '{v[$2]+=$1} END {for (k in v) print k,v[k]}'
- A hozzászóláshoz be kell jelentkezni
veheted úgy, hogy hanyagul kódolok.
vannak alapvetések amik nem esnek nehezemre, nekem egyfajta gyakorlat. lehet vitatni, hogy jó, vagy sem.
a kód több nyelv és dialektus - és nem csak awk - keveréke.
inklább legyen olvasható, nem kellett beleférni 11 byte-ba.
- A hozzászóláshoz be kell jelentkezni
Így világos. Komolyan azt hittem, hogy valami spéci dialektus.
- A hozzászóláshoz be kell jelentkezni
Pedig az. man mawk és man nawk sem tartalmazza sem a "-e" opciót, sem a "declare" parancsot. (Speciel a man gawk sem, de attól nem is várom el, mer' ugye GNU-éknál a man valami csökevény, és az info doksiban kéne leírni mindent.)
Szóval rka most picit túllőtt a célon, mert sajnos a hordozhatóság elveszett :)
- A hozzászóláshoz be kell jelentkezni
Mármint persze, hogy spéci, de mint kiderült nem spéci awk, hanem spéci pszeudokód, ami kicsit úgy néz ki, mintha awk volna.
- A hozzászóláshoz be kell jelentkezni
lehet. de a nyelvek közötti megmaradt.
tudod, én a saját kényelmemben vagyok érdekelt ;)
ja, természetesen az awk képes értelmezni, azt hiszem éppen gawk.
- A hozzászóláshoz be kell jelentkezni
Nem értelmezi, hanem egy olyan kifejezésnek fogja fel, amelyben a konkatenálod a declare változó és a v[$2] tömbelem értékét... vagyis üres sztring.
Így látszik is:
$ echo "1 alfa" | gawk --lint '{declare v[$2]; v[$2]+=$1} END{ for(k in v) print k, v[k]}'
gawk: warning: statement may have no effect
gawk: (FILENAME=- FNR=1) warning: reference to uninitialized variable `declare'
gawk: (FILENAME=- FNR=1) warning: reference to uninitialized element `v["alfa"]'
alfa 1
- A hozzászóláshoz be kell jelentkezni
meggyőző.
félre-értelmezi, de a hibahatáron belül vagyunk.
meghagyom a tömb előírást a perlnek, meg shellnek, meg...
köszi.
- A hozzászóláshoz be kell jelentkezni
@ubul_ plz zard le a code taget. Es legkozelebb hasznalj bbCode [ code ] taget. Nagyon koszonom.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Hát ha neked Perl-ben vagy awk-ban megírni macerás... A bölcsész (esetleg jogi) karhoz mit szólnál?
- A hozzászóláshoz be kell jelentkezni
ubul! A legfelül, az első kommented végén csukd már be azt a taget, amit elfelejtettél.
(Direkt nem arra írom ezt a választ, hogy tudjad még módosítani)
- A hozzászóláshoz be kell jelentkezni
Trey-tol megkertem a modositast, azota meg is csinalta.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni