• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Zahlen in verschiedenen Zeilen zusammenrechnen

dlx76

Newbie
Hi Leute,

Blöde frage:

Ich habe mir über awk '/SAP/ {print $2}' 4 Zahlen ausgeben lassen

150
55
445
350

wie kann ich die nun (z.B. mit einer for-Schleife) zusammenrechnen?
Da ich ein Neuling bin, wäre es super wenn ihr mir die Funktionsweise mit erklären könntet.

Danke
 

abgdf

Guru
Code:
#!/bin/bash

a="150 55 445 350"

b=0
for i in $a
do
    let "b += $i"
done

echo $b
http://www.angelfire.com/linux/tux25/bash/bash.html

Gruß
 
OP
D

dlx76

Newbie
Leider klappt das nicht...ich möchte die Zahlen nicht nicht manuell angeben sondern direkt aus dem Ergebnis der AWK-Abfrage beziehen. Wie mache ich das am besten?
 

abgdf

Guru
a=$(awk wasweißich) natürlich ...

http://www.angelfire.com/linux/tux25/bash/bash.html#7

Nicht gelesen, was?
 
A

Anonymous

Gast
dlx76 schrieb:
Ich habe mir über awk '/SAP/ {print $2}' 4 Zahlen ausgeben lassen

150
55
445
350
wie kann ich die nun (z.B. mit einer for-Schleife) zusammenrechnen?

macht awk alles gleich mit.

Code:
cat irgendwas  | awk '/SAP/ {summe += $2; print $2 };END {print "----------\n" summe }'

robi
 

abgdf

Guru
Natürlich kann awk Zahlen addieren. Ich bin nur davon ausgegangen, daß der OP da einen komplexen awk-Befehl hatte, den er nicht durchschaute und froh war, überhaupt die vier Zahlen als Ergebnis zu erhalten.
 
Hallo,
robi schrieb:
Code:
cat irgendwas  | awk '/SAP/ {summe += $2; print $2 };END {print "----------\n" summe }'
robi
Fehlt nur noch eine Erklärung wer da was genau macht! Wollte doch der TE so haben?:
Code:
cat                           startet das Anzeigeprogramm cat
irgendwas                     die Datei/en die angezeigt werden sollen
|                             das Angezeigte an das nächste Programm awk übergeben zur weiteren Verarbeitung
awk                           das Programm awk starten mit der Ausgabe von cat
/SAP/                         der Pfad wo awk sein Endprodukt hinlegen soll
{summe += $2; print $2 }      Die Anweisung an awk eine Summe zu erstellen aus....#hier komme ich nicht ganz mit#
;                             dann (Kenne ich von Excel)
END                           es wird etwas beendet?
{print "----------\n" summe } awk wird angewiesen die Summe auszugeben ]Was "----------\ bedeutet muss mir wohl die manpage
                              sagen. In einer Tabellenkalkulation sieht so etwas leicht anders aus.

lieben Gruß aus Hessen
 
A

Anonymous

Gast
Herz-von-Hessen schrieb:
Was "----------\n" bedeutet muss mir wohl die manpage sagen.

ganz einfach das ist der große Strich unter den Zahlen ;) Sonst sieht niemand wo die Daten aufhören und was die Summe ist.

robi
 
Hallo,
oh man, das war jetzt zu kompliziert von mir gedacht. Typischer Fall von "Den Wald vor lauter Bäumen nicht sehen"
lieben Gruß aus Hessen
 
A

Anonymous

Gast
Herz-von-Hessen schrieb:
Fehlt nur noch eine Erklärung wer da was genau macht! Wollte doch der TE so haben?:
das von oben können wir auch nicht ganz so stehen lassen.

  • # "/SAP/" jede einzelne Zeile wird untersucht ob in ihr "SAP" vorkommt. wenn ja. dann wird gemacht was dahinter in "{ .... }" steht, wenn nicht, dann machen wir hier eben nichts.

    # {summe+=$2;print $2} Das ist jetzt die Aktion die da ausgeführt wird wenn die Suche erfolgreich war. "summe" ist eine frei gewählte Variable, die ist am Programmstart leer oder 0. Jedes mal wenn die Aktion durchlaufen wird, wird das 2. Feld der Zeile dazu addiert, Das " ; " ist zur Trennung, weil wir einen weiteren Befehl ausführen wollen, und der gibt dann das 2. Feld an die Standardausgabe aus.

    # "END" sagt hier, was dahinter in "{ .... }" steht wird dann ausgeführt, wenn alle Eingabezeilen komplett abgearbeitet sind.

    # "{print "----------\n" summe }" das ist jetzt die Endaktion die dabei ausgeführt werden soll, und die mach weiter nichts als den Inhalt der Variable "summe" jetzt auszugeben. "----------\n" , hatten wir ja schon



robi
 
Oben