Zwei Feldtrennzeichen (Doppelpunkt und Leerzeichen) in awk


8

Wie können wir zwei Feldtrennzeichen im Befehl awk angeben, wenn eines davon Leerzeichen ist? Ich denke, dies kann durch die Verwendung einer eingebetteten if-else-Bedingung in awk erreicht werden, bin mir jedoch nicht sicher über den genauen Befehl.

Beispieldatei ist wie folgt:

cat test.txt
Swapnil Engineer 20000
Avinash:Doctor:30000
Dattu GovntJob 50000
Amol:Master:10000

Ich möchte die zweite Spalte drucken ($ 2). Die erwartete Ausgabe ist:

Engineer
Doctor
GovntJob
Master

Als ich versuchte, sowohl Leerzeichen als auch Doppelpunkt als Feldtrennzeichen zu verwenden, schlug dies mit einem Syntaxfehler fehl:

awk -F[ :] '{print $2}' test.txt
awk: cmd. line:1: :]
awk: cmd. line:1: ^ syntax error

Wie können wir zwei Feldtrennzeichen verwenden und die awk-Funktionalität nutzen?


Denken Sie zusätzlich zu Yetis Antwort daran, dass sich die Shell durch nicht zitierte Leerzeichen aufteilt, um die Liste der Argumente für awk zu erstellen. Anstelle von -F[ :](einem Argument ) erhielt sie -F[:und ]. Dieses Diagramm ist sehr praktisch (beachten Sie die vertikalen Pfeile für einfache / doppelte Anführungszeichen).
ArielCo

Vielen Dank, ArielCo, sehr geschätzt!
Swapnil Dhule

Antworten:


13

Du bist auf dem richtigen Weg!
Fügen Sie einfach die fehlenden Anführungszeichen hinzu [ :]:

awk -F'[ :]' '{print $2}' test.txt
Engineer
Doctor
GovntJob
Master
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.