AWK中的两个字段分隔符(冒号和空格)


8

当其中之一为空格时,如何在awk命令中指定两个字段分隔符?我认为可以通过在awk中使用嵌入式if-else条件来完成此操作,但是我不确定确切的命令。

示例文件如下:

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功能?


除了Yeti的答案外,请记住,shell会用未加引号的空格分割以创建awk的参数列表,因此-F[ :]它得到了-F[:和而不是(一个arg)]该图表非常方便(请注意单/双引号的垂直箭头)。
arielCo

感谢ArielCo,非常感谢!
Swapnil Dhule

Answers:


13

您在正确的轨道上!
只需添加缺少的引号[ :]

awk -F'[ :]' '{print $2}' test.txt
Engineer
Doctor
GovntJob
Master
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.