Zwei Feldtrennzeichen (Doppelpunkt und Leerzeichen) in awk

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

Die Beispieldatei lautet 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 lautet:

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?

Kommentare

  • Zusätzlich zu Denken Sie bei der Antwort von Yeti ' daran, dass die Shell durch nicht zitierte Leerzeichen geteilt wird, um die Liste der Argumente für awk zu erstellen, also anstelle von -F[ :] (eins) arg) es hat -F[: und ]. Dieses Diagramm ist sehr praktisch (beachten Sie die vertikalen Pfeile für einfache / doppelte Anführungszeichen).
  • Vielen Dank, ArielCo, sehr geschätzt!

Antwort

Sie sind auf dem richtigen Weg!
Fügen Sie einfach die fehlenden Anführungszeichen um :

awk -F"[ :]" "{print $2}" test.txt Engineer Doctor GovntJob Master 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.