awk -F: "{ print \$1 }" passwd

A

art

Jungspund
awk -F: "{ print $1 }" passwd

Die Zeile soll folgendes bewirken :
Aus passwd sollen aus jeder Zeile jeweils die Zeichenketten bis zum ersten ":"
ausgegeben werden. Aber FieldSeparator wird irgendwie ignoriert, also passwd
wird so ausgegeben wie es ist.

Wenn ich den Code ändere zu:
awk -F: "{ print \$1 }" passwd
so macht AWK alles richtig. Ich verstehe die Funktion von "\" nicht ganz..?(
kann mir jemand helfen?
danke!!
 
Code:
awk -F":" '{ print $1 }' /etc/passwd
 
b3ll3roph0n: nein, die Quote sind optional beim Fieldseperator.
Code:
awk -F: '{print $1}' /etc/passwd

Du musst ' ' (single quotes) nehmen, damit die $SHELL nicht das $ auswertet.
 
b3ll3roph0n: nein, die Quote sind optional beim Fieldseperator.
Es schadet aber auch nicht sich gleich ans Quoten gewöhnt ... spätestens beim Umgang mit Shell-Veriablen macht sich das bezahlt. ;)

Du musst ' ' (single quotes) nehmen, damit die $SHELL nicht das $ auswertet.
Pssst.
Hab ich doch auch verwendet. ;)


Ergänzung:
art schrieb:
Ich verstehe die Funktion von "\" nicht ganz..
Mit dem "\" (Backslash) wird das folgende Zeichen maskiert.
D.h. $1 wird in diesem Fall von der Shell nicht als Variable ausgewertet.

Siehe: man bash
Stichwort: escape character
 
Es schadet aber auch nicht sich gleich ans Quoten gewöhnt ... spätestens beim Umgang mit Shell-Veriablen macht sich das bezahlt. ;)

Jojo, bei Shellvariablen und anderem Fubar, aber generell sind das mehr Tastenanschläge (=> also uncool). und die Seperator kann man halt auch ohne Quotes easy angeben. Wenn nicht nimmst du gleich nen BEGIN{} block und außenrum single quotes dann bist du _ganz_ sicher.

P.S.: Mit \ (Escape character) kannst du Metazeichen vor der Interpolation der $SHELL schützen.
 
hallo
cut ist ein wenig flinker. ;)
Code:
$ cut -d: -f1 /etc/passwd

Generell ist das Quoting möglicherweise für einige uncooler aber sicherer.
Das Escapen macht die Sache einigermaßen unübersichtlich.
Also wo es vermeidbar ist, sollte es vermieden werden.
 

Ähnliche Themen

Zeilen behalten, die Werte in einem bestimmten Bereich enthalten

Samba 3.6.25 - OpenLDAP Setup

Mit AWK verschiedene Felder verschiedener Zeilen vergleichen

"non blocking console input" wieder rückgängig machen?

Spalten einer Datei in neue Datei integrieren.

Zurück
Oben