ubuntuusers.de

Shell-Variable als Filterargument an awk übergeben

Status: Gelöst | Ubuntu-Version: Xubuntu 11.10 (Oneiric Ocelot)
Antworten |

Vincent_Vegan

Anmeldungsdatum:
15. Juni 2009

Beiträge: Zähle...

Wohnort: Wien

Hallo zusammen!

Ich möchte gerne eine durch zenity befüllte Shell-Variable als Filterargument an awk übergeben. Leider schaffe ich es offensichtlich nicht, das korrekt zu tun und hoffe daher auf eure Hilfe!

Das ganze sieht in etwa so aus, produziert aber eine leere Ausgabe:

1
2
benutzer="vincent"
awk -v benutzer="$benutzer" -F: '$4~benutzer {print $1}' /etc/group

Der Fehler liegt eindeutig bei der Variablenübergabe an awk (also in -v benutzer="$benutzer"), denn diese Version funktioniert:

1
awk -v benutzer="vincent" -F: '$4~benutzer {print $1}' /etc/group

Hat vielleicht jemand einen Tipp, wo mein Fehler liegt? Habs schon mit und ohne doppelten und einfachen Anführungszeichen sowie diversen Kombinationen versucht und es will und will einfach nicht!

lg, VV

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2505

Servus,

ich sehe da eigentlich kein Problem, deine gepostete Version ist von den Anführungszeichen her auch richtig. Wie genau befüllst du denn das „$benutzer“? Ist da vielleicht am Ende des Strings noch ein Zeilenumbruch drin oder so?

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi Vincent,

ich weiß nicht was Du hast, aber bei mir funktioniert es:

track@lucid:~$ benutzer="track"
track@lucid:~$ awk -v benutzer="$benutzer" -F: '$4~benutzer {print $1}' /etc/group
adm
dialout
fax
cdrom
floppy
audio
plugdev
lpadmin
admin
sambashare

LG,

track

Vincent_Vegan

(Themenstarter)

Anmeldungsdatum:
15. Juni 2009

Beiträge: 9

Wohnort: Wien

Vain schrieb:

Wie genau befüllst du denn das „$benutzer“? Ist da vielleicht am Ende des Strings noch ein Zeilenumbruch drin oder so?

$benutzer wird über eine Zenity-Radiobox befüllt die ihre Elemente auch aus awk erhält. Zeilenumbruch ist keiner drinnen, aber offensichtlich irgendein Steuerzeichen das von Zenity übergeben wird - und zwar am Anfang des Strings. Wenn ich benutzer=${benutzer: +1} übergebe funktionierts wunderbar.

Dankesehr! Den Wald vor Bäumen nicht gesehen (mein erstes Mal mit zenity UND mit awk!)...

Antworten |