Portál AbcLinuxu, 5. května 2025 21:42
Řešení dotazu:
sorry, ale to formatování...napíšu to znova
př. tab
a | b | 1 | d |
a | b | 2 | d |
a | b | 3 |
d |
a | b | 4 | d |
{ soucet=soucet+$3 i++ # print i, soucet # odkomentuj zacatek, abys videl jak to nacita } END { print soucet/i }
awk -f tab.awk tab.txt
Jakou výhodu má mít to i
ve srovnání s NR
?
echo "a 3 b z 7 8" | tr " " "\n"| awk 'BEGIN { sum=0; count=0} /([0-9])/ {sum = sum + $1 ; (count++) } END { print sum / count }'Ak len priemer stlpcov:
echo -e "a 3 b z 7 8\na 5 b z 9 10" | awk 'BEGIN { sumA=sumB=sumC=count=0} /([0-9])/ {sumA = sumA + $2 ; sumB = sumB + $5 ;sumC = sumC + $6 ; (count++) } END { print sumA / count " " sumB / count " " sumC / count}'
echo "a 3 b z 7 8" | tr " " "\n"| awk 'BEGIN { sum=0; count=0} /([0-9])/ {sum = sum + $1 ; (count++) } END { print sum / count }'Ak len priemer stlpcov (tu netreba /([0-9])/):
echo -e "a 3 b z 7 8\na 5 b z 9 10" | awk 'BEGIN { sumA=sumB=sumC=count=0} {sumA = sumA + $2 ; sumB = sumB + $5 ;sumC = sumC + $6 ; (count++) } END { print sumA / count " " sumB / count " " sumC / count}'
Šmarja! Tady v tom vlákně je normálně úplně nablito!
awk '{sum += $3} END {print sum / NR}' < data.txt
(Pokud by náhodou hrozilo, že součet čísel překročí nějaké obrovské číslo (třeba 64-bitové, 18446744073709551616, byť konkrétní limit není rozumně definovaný a pojí se s ním bug), dá se AWK pomocí -M
říct, aby používalo GNU GMP, tedy neomezená čísla.)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.