awk Variable als regulären Ausdruck brauchen

D

dsx12

Ich will in awk eine Variable als regulären Ausdruck brauchen. Das hat eigentlich soweit auch geklappt, nur wenn ich einen String mit einem Leerzeichen habe geht es nicht. Ich will in /etc/passwd nach ganzen Namen suchen und den dazugehörenden Benutzernamen ausgeben.
Code:
#!/bin/sh
echo Please enter your name:
read name
awk 'BEGIN{
FS=":"
}
$5 ~ /'$name'/{print $1}' /etc/passwd

Ich erhalte folgenden Fehler bei der Suche nach einem ganzen Namen.
Code:
Please enter your name:
Vorname Nachname
awk: Kommandozeile:3: $5 ~ /Vorname
awk: Kommandozeile:3:       ^ Nicht-beendeter Regulärer Ausdruck
 
... sollte eigentlich ganz einfach durch Double-Quotes um "$name" zu lösen sein; wenn du dann noch den FS über die Option '-F' auf der Kommandozeile setzt, lässt sich der ganze awk zum Einzeiler zusammenfassen:
Code:
awk -F: '$5 ~ /'"$name"'/{print $1}' /etc/passwd
Gruss, A.
 
Danke hat bestens funktioniert.
Was ist eigentlich der Unterschied von doppelten(") zu einfachen(') Quotes in Shell-Scripts?
 
Im Wesentlichen werden Variablen innerhalb von double quotes ausgewertet, innerhalb von single quotes nicht. Details gibt's in den Manuals oder z.B. auch im Advanced Bash-Scripting Guide.

Gruss, A.
 

Ähnliche Themen

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Windows clients können nicht mehr auf lange laufendes System zugreifen

dovecot und postfix Konfiguration Problem

Drucker einrichten mit CUPS und SAMBA

HP PSC 2175 - CUPS druckt nicht

Zurück
Oben