Portál AbcLinuxu, 14. května 2025 00:41

Dotaz: awk výpočet a formát výstupu

1.9.2014 12:37 majales | skóre: 29 | blog: Majales
awk výpočet a formát výstupu
Přečteno: 267×
Odpovědět | Admin
Zdravím, Používám vlastní jednoduchý bash skript na statistiky webserveru. Ve skriptu používám awk a v něm mám výpočet času stahování odpovědi rozílem mezi časem zahájení requestu a a časem first-byte - to je čas kdy se začne odesílat odpoveď. Problém je ve formátu prože jsou hodnoty v mikrosekundách dělím výledek miliónem abych dostal čas v sekundách takto:
awk 'NF > 0 { print  " " (($2 - $3)/1000000),$1,$2,$3....
Problém je, že když je výstup menší než 1 sekundu objeví se výsledek v exponenciální podobě ve tvaru:
9.9e-05
Dá se nějak inteligentně zformátovat výstup třeba na 2 desetiná místa a bez exponentu?

Díky za tip.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.9.2014 13:07 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: awk výpočet a formát výstupu
Odpovědět | | Sbalit | Link | Blokovat | Admin
printf()
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
1.9.2014 13:35 Charon
Rozbalit Rozbalit vše Re: awk výpočet a formát výstupu
Hmm, to jste mu jen napověděl. :-)

Následující příklad Vám ukáže:

awk 'BEGIN { printf "%.2f\n",(75234563/1000000)};'

Výsledek: 75,23

Jinak studujte AWK manuál, např. zde -> https://www.gnu.org/software/gawk/manual/html_node/Format-Modifiers.html#Format-Modifiers
2.9.2014 10:03 majales | skóre: 29 | blog: Majales
Rozbalit Rozbalit vše Re: awk výpočet a formát výstupu
Zdravím, Díky za tipy. Už mi to funguje. Jediné čemu nerozumím je že když použiju awk takto:
awk '{if (NF > 0) printf "%.2f", ($3/1000000)} {print $1,$2,$4 ... 
Tak mi to vždycky spolkne ten první sloupec z té následující skupiny, konkrétně mám na mysli to "{print $1". Další sloupce jsou už v pohodě...

2.9.2014 11:57 Charon
Rozbalit Rozbalit vše Re: awk výpočet a formát výstupu
Hmmmm,ok.

Zkuste následující úpravu.

awk '{if (NF > 0) printf "%.2f %s %s %s\n", ($3/1000000),$1,$2,$4}'

Bye.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.