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