awk Syntax

Started by bluelupo, 2016/04/18, 12:26:35

Previous topic - Next topic

bluelupo

Hallo Community,

ich stehe gerade mit awk vor einem Problem und komme nicht weiter. Folgender Ausdruck meckert einen Syntaxfehler an.


$ dpkg-query -W -f='${binary:Package}#${Version}#${Status}#${Recommends}\n' 'plasma*' | egrep "install ok installed" | awk -F"#" '{if (length($4)>0) printf("%-45s|%-37s|%.35s|\n", $1,$2,$4) else (print "n/a")}'

awk: Kommandozeile:1: {if (length($4)>0) printf("%-45s|%-37s|%.35s|\n", $1,$2,$4) else (print "n/a")}
awk: Kommandozeile:1:                                                             ^ syntax error
awk: Kommandozeile:1: {if (length($4)>0) printf("%-45s|%-37s|%.35s|\n", $1,$2,$4) else (print "n/a")}
awk: Kommandozeile:1:                                                                               ^ syntax error


Ich möchte gerne erreichen das mir dpk-query bei dem Feld "Recommends" (in awk $4) wenn etwas drinsteht auch ausgegeben wird, ansonsten soll der String "n/a" (else) ausgegeben werden.

Die Felder $1, $2 und $4 sollen immer ausgegeben werden.

So wäre mein gewünschtes Ergebnis:

plasma-widgets-addons#4:5.4.3-1#install ok installed#n/a
plasma-workspace#4:5.4.3-2#install ok installed#kio-extras, libpam-kwallet5


Wo liegt hier mein Fehler?

EDIT:

Auch das ergibt immer noch einen Syntaxfehler. Vermutlich ist ein Klammerpaar an der falschen Stelle, aber welches?

$ dpkg-query -W -f='${binary:Package}#${Version}#${Status}#${Recommends}\n' 'plasma*' | egrep "install ok installed" | awk -F"#" '{if (length($4)>0) printf("%-45s|%-37s|%.35s|\n", $1,$2,$4) else (printf("%-45s|%-37s|%.35s|\n", $1,$2,"n/a"))}'

awk: Kommandozeile:1: {if (length($4)>0) printf("%-45s|%-37s|%.35s|\n", $1,$2,$4) else (printf("%-45s|%-37s|%.35s|\n", $1,$2,"n/a"))}
awk: Kommandozeile:1:                                                             ^ syntax error
awk: Kommandozeile:1: {if (length($4)>0) printf("%-45s|%-37s|%.35s|\n", $1,$2,$4) else (printf("%-45s|%-37s|%.35s|\n", $1,$2,"n/a"))}
awk: Kommandozeile:1:                                                                                                              ^ syntax error
awk: Kommandozeile:1: {if (length($4)>0) printf("%-45s|%-37s|%.35s|\n", $1,$2,$4) else (printf("%-45s|%-37s|%.35s|\n", $1,$2,"n/a"))}
awk: Kommandozeile:1:                                                                                                               ^ syntax error

Geier0815

Ist jetzt nur geraten aber printf verwendet bei awk, soweit ich weiß, keine Klammern, evtl. hängt es daran...
Guckst Du
Wenn Windows die Lösung ist...
kann ich dann bitte das Problem zurück haben?

Penyelam

Scheint nicht an den Klammern zu liegen, ohne dem else-Zweig funktioniert's ja.

bluelupo

So ich habe das jetzt bisschen übersichtlicher gestaltet und schon klappt es. Der Knackpunkt waren die geschweiften Klammern.

Auszug aus meinem Script:

dpkg-query -W -f='${binary:Package}#${Version}#${Status}#${'$RECOMMENDS'}\n' "$PROG" | egrep "install ok installed" | awk   -F"#" '
          {
               LEN=length($4)
               STRING_SHORT=substr($4,0,30)
               if (LEN>=30)         {printf("%-45s|%-37s|%-45s\n", $1,$2,STRING_SHORT" ...")}
               if (LEN>0 && LEN<30) {printf("%-45s|%-37s|%-45s\n", $1,$2,STRING_SHORT)}
               if (LEN==0 )         {printf("%-45s|%-37s|%-45s\n", $1,$2,"n/a")}
            }'


Dann kommt die Ausgabe:

plasma-dataengines-addons                    |4:5.4.3-1                            |n/a
plasma-desktop                               |4:5.4.3-1                            |bluedevil, fonts-oxygen, kde-c ...
plasma-desktop-data                          |4:5.4.3-1                            |plasma-framework, plasma-works ...
plasma-framework                             |5.16.0-1                             |n/a
plasma-nm                                    |4:5.4.3-1                            |n/a
plasma-pa                                    |5.4.3-1                              |n/a
plasma-runners-addons                        |4:5.4.3-1                            |n/a
plasma-scriptengine-javascript               |4:15.08.3-1+b1                       |n/a
plasma-systray-legacy                        |0~git20151104-ded1538-2              |n/a
plasma-wallpapers-addons                     |4:5.4.3-1                            |n/a
plasma-widget-folderview                     |4:15.08.3-1                          |n/a
plasma-widgets-addons                        |4:5.4.3-1                            |n/a
plasma-workspace                             |4:5.4.3-2                            |kio-extras, libpam-kwallet5