Bereken het kolomgemiddelde met bash-shell

  • Ronald Ferguson
  • 0
  • 3521
  • 668
> Vraag:
Is er een manier om het gemiddelde te berekenen van een enkele kolom die is opgeslagen in een tekstbestand? Mijn bestand bevat bijvoorbeeld:
 $ cat file.txt regel1 4.5 regel2 6 
hoe krijg ik 5,25 ?
Antwoord:
Een manier om dit te doen is door een combinatie van bash for loop-, cut-, echo- en bc-opdrachten te gebruiken. Voer de onderstaande code uit, ervan uitgaande dat file.txt zich in uw huidige werkdirectory bevindt:
 $ count = 0; totaal = 0; voor i in $ (awk 'print $ 2;' file.txt); \ do total = $ (echo $ total + $ i | bc); \ ((tel ++)); gedaan; echo "scale = 2; $ total / $ count" | bc 5.25 
en hier is een shell-scriptversie van het bovenstaande commando, zodat we kunnen zien wat er in meer detail gebeurt:
 #! / bin / bash count = 0; totaal = 0; voor i in $ (awk 'print $ 2;' file.txt) do total = $ (echo $ total + $ i | bc) ((count ++)) gedaan echo "scale = 2; $ total / $ count" | bc 
Voor elke regel in file.txt extraheren we een tweede kolom met awk ($ i). Vervolgens gebruiken we het echo- en bc-commando om alle getallen $ i toe te voegen om een ​​totaal $ totaal te krijgen. Het script slaat ook een aantal lussen op $ count. De laatste regel gebruikt echo- en bc-opdrachten om het gemiddelde te berekenen met twee decimalen. AWK enige methode om kolomgemiddelde te berekenen:
 $ awk 'totaal + = $ 2; count ++ END print total / count 'file.txt 5.25 



Niemand heeft nog op dit artikel gereageerd.