Два розділювачі поля (двокрапка та пробіл) у розм


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?


На додаток до відповіді Йєті, пам’ятайте, що оболонка розбивається по котируваному пробілу, щоб створити список аргументів для пробудження, тому замість -F[ :](одного аргументу) він отримав -F[:і ]. Ця діаграма досить зручна (зверніть увагу на вертикальні стрілки для одинарних / подвійних лапок).
arielCo

Дякую ArielCo, високо цінуємо!
Swapnil

Відповіді:


13

Ви на правильному шляху!
Просто додайте пропущені цитати навколо [ :]:

awk -F'[ :]' '{print $2}' test.txt
Engineer
Doctor
GovntJob
Master
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.