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