Siduction Forum > Scripts & Kernelhacking (DE)

awk Syntax

(1/1)

bluelupo:
Hallo Community,

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


--- Code: ---$ 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

--- End code ---

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:

--- Code: ---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

--- End code ---

Wo liegt hier mein Fehler?

EDIT:

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

--- Code: ---$ 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

--- End code ---

Geier0815:
Ist jetzt nur geraten aber printf verwendet bei awk, soweit ich weiß, keine Klammern, evtl. hängt es daran...
Guckst Du

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:

--- Code: ---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")}
            }'

--- End code ---

Dann kommt die Ausgabe:

--- Code: ---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

--- End code ---

Navigation

[0] Message Index

Go to full version
Powered by SMFPacks WYSIWYG Editor