如何在 awk 中同时使用 string 和另一个 character 作为分隔符?

sdlcb@ubuntu:~/AMD_C/SO$ echo "111:222text333:444" | awk -F ':' '{print $2}'
222text333

sdlcb@ubuntu:~/AMD_C/SO$ echo "111:222text333:444" | awk -F "text" '{print $2}'
333:444

那么问题来了,如何同时使用“text”和“:”作为分隔符,让{print $2}打印222作为输出呢?考虑上面示例中的输入。

最佳答案

您可以使用简单的交替

$ echo "111:222text333:444" | awk -F "text|:" '{print $2}'
222

有什么作用
  • -F "text|:" 将字段分隔符设置为 text:

  • 测试

    为了确保这正确分隔字段
    $echo "111:222text333:444" | awk -F "text|:" '{print $1,$2,$3,$4}'
    111 222 333 444
    

    编辑

    如果要使用 | 作为分隔符,请将 | 转义为
    $ echo "111:222text333:444|hello" | awk -F '\\||text|:' '{print $1,$2,$3,$4,$5}'
    111 222 333 444 hello
    

    关于linux - 如何将 awk 分隔符设置为字符串或字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27129822/

    10-13 06:42