Два разделителя полей (двоеточие и пробел) в awk

8

Как мы можем указать два разделителя полей в команде awk, если один из них является пробелом? Я думаю, что это можно сделать, используя встроенное условие if-else в awk, однако я не уверен насчет точной команды.

Пример файла, как показано ниже:

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

Я хочу напечатать второй столбец (2 доллара). Ожидаемый результат:

Engineer
Doctor
GovntJob
Master

Когда я попытался указать пробел и двоеточие в качестве разделителей полей, произошел сбой с синтаксической ошибкой:

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

Как мы можем использовать два разделителя полей и использовать функциональность awk?

Свапнил Дуле
источник
В дополнение к ответу Йети, помните, что оболочка разделяется на пробелы без кавычек, чтобы создать список аргументов для awk, поэтому вместо -F[ :](один аргумент) она получила -F[:и ]. Этот график очень удобен (обратите внимание на вертикальные стрелки для одинарных / двойных кавычек).
arielCo
Спасибо ArielCo, высоко ценится!
Swapnil Dhule

Ответы:

13

Ты на правильном пути!
Просто добавьте пропущенные кавычки [ :]:

awk -F'[ :]' '{print $2}' test.txt
Engineer
Doctor
GovntJob
Master
Свапнил Дуле
источник