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

Swa*_*ule 11 awk

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

示例文件如下:

cat test.txt
Swapnil Engineer 20000
Avinash:Doctor:30000
Dattu GovntJob 50000
Amol:Master:10000
Run Code Online (Sandbox Code Playgroud)

我想打印第二列($2)。预期输出为:

Engineer
Doctor
GovntJob
Master
Run Code Online (Sandbox Code Playgroud)

当我尝试将空格和冒号都作为字段分隔符时,它因语法错误而失败:

awk -F[ :] '{print $2}' test.txt
awk: cmd. line:1: :]
awk: cmd. line:1: ^ syntax error
Run Code Online (Sandbox Code Playgroud)

我们如何使用两个字段分隔符并利用 awk 功能?

小智 16

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

awk -F'[ :]' '{print $2}' test.txt
Engineer
Doctor
GovntJob
Master
Run Code Online (Sandbox Code Playgroud)