Website-Suche

Berechnen des Spaltendurchschnitts mit der Bash-Shell


Der Zweck dieses Tutorials besteht darin, zu zeigen, wie die Bash-Shell den Durchschnittswert einer einzelnen Spalte einer Textdatei auf einem Linux-System berechnen kann.

Lesen Sie unten, um den Code zu sehen, den Sie auf Ihrem eigenen System verwenden können, um einen Spaltendurchschnitt zu berechnen.

In diesem Tutorial lernen Sie:

  • So berechnen Sie den Spaltendurchschnitt mit der Bash-Shell

Berechnen des Spaltendurchschnitts mit der Bash-Shell

Unsere Beispieldatei enthält die folgenden zwei Zeilen:


line1 4.5
line2 6

Der Durchschnitt dieser beiden Zahlen beträgt 5.25. Sehen wir uns an, wie wir diesen Durchschnitt mit Bash erreichen können. Unsere Lösung sollte skalierbar sein, damit sie auch dann funktioniert, wenn wir mehr Leitungen hätten.

  1. Eine Möglichkeit, dies zu tun, besteht darin, die Kombination aus Bash for-Schleife zusammen mit den Befehlen cut, echo und bc zu verwenden. Führen Sie den folgenden Code aus, vorausgesetzt, dass sich file.txt in Ihrem aktuellen Arbeitsverzeichnis befindet:

    
    count=0; total=0; for i in $( awk '{ print $2; }' file.txt );\
    do total=$(echo $total+$i | bc ); \
    ((count++)); done; echo "scale=2; $total / $count" | bc
    
  2. Und hier ist eine Shell-Skript-Version des obigen Befehls, damit wir genauer sehen können, was passiert:

    
    #!/bin/bash
    
    count=0;
    total=0; 
    
    for i in $( awk '{ print $2; }' file.txt )
       do 
         total=$(echo $total+$i | bc )
         ((count++))
       done
    echo "scale=2; $total / $count" | bc
    

    Für jede Zeile in file.txt extrahieren wir eine zweite Spalte mit awk ( $i ). Dann verwenden wir die Befehle echo und bc, um alle Zahlen zu addieren $i eine Gesamt$total zu erhalten. Das Skript speichert auch eine Reihe von Schleifen in $count. In der letzten Zeile werden die Befehle echo und bc verwendet, um den Durchschnitt mit zwei Dezimalstellen zu berechnen.

  3. Hier ist eine weitere Methode zur Berechnung des Durchschnitts, indem Sie nur den Befehl awk verwenden.

    
    awk '{ total += $2; count++ } END { print total/count }' file.txt 
    
  4. Hier ist eine weitere Methode, die auf awk, paste, wc und bc basiert. Dies funktioniert so, wie es ist, unabhängig davon, wie viele Zeilen Ihre Datei enthält.

    
    sum=$(awk '{print $2}' file.txt | paste -sd+ | bc); echo "$sum / $(cat file.txt | wc -l)" | bc -l
    

Abschließende Gedanken

In diesem Tutorial haben wir gelernt, wie man den Durchschnitt einer Spalte in Bash berechnet. Die Bash-Shell ist so flexibel und leistungsstark, dass sie uns fast immer die Möglichkeit bietet, Aufgaben wie die in diesem Tutorial behandelte zu erledigen. Wie üblich gibt es viele verschiedene Möglichkeiten, dieses Problem anzugehen, und eine Vielzahl verschiedener Tools, die für diese Aufgabe verwendet werden können. Wir haben hier einige der einfachsten behandelt. Vielleicht fällt Ihnen ein noch besserer Weg ein.

Verwandte Artikel: