2017-03-04 6 views
0

Ich habe eine awk-Linie, um einen Durchschnitt zu berechnen, der gut funktioniert, aber wenn ich es in eine if-Anweisung setze, bekomme ich einen Syntaxfehler bezüglich des Teils mit "END". Ich möchte den Durchschnitt nur berechnen, wenn bestimmte Bedingungen erfüllt sind.mehrere Anweisungen nach if-Anweisung

Linie Durchschnitt für die Berechnung, die funktioniert:

awk '{ sum += $2; n++ } END { if (n > 0) print sum/n; }' input.txt

Linie für die Berechnung der durchschnittlichen nach if-Anweisung, die nicht funktioniert:

awk '{if ($1 > 5) { {sum += $2; n++} END { if (n > 0) print sum/n; }}}' input.txt

Ich mag würde, wo der Fehler wissen ist, die Änderung der Art und Anzahl der Klammern hat nicht geholfen.

+0

Warum glauben Sie, ein Muster in einem Block setzen kann? –

+0

Ich dachte, es funktioniert, als würde ich sie nur zusammen ausführen. –

+0

Sie sollten wahrscheinlich Ihre "Bash" -Tag entfernen, das ist eine reine "Awk" -Frage. – Fred

Antwort

2

versuchen diese

awk '$1>5 {sum+=$2; n++} 
    END {if(n) print sum/n}' file