linux - 如何使用 '\t|' 字符串作为分隔符使用 awk 拆分字符串?

标签 linux awk

我正在尝试像这样使用自定义字段分隔符拆分字符串:

$ echo -e "abc\t|def" | awk -F '\t|' '{print $1, $2}'
abc |def

我希望输出是:

abc def

但它还包含作为分隔符一部分的 | 字符:

abc |def

如果使用 '\t#' 作为分隔符,我会得到预期的输出:

$ echo -e "abc\t#def" | awk -F '\t#' '{print $1, $2}'
abc def

因此由于某些原因,字段分隔符中的 | 字符无法按预期工作。
我怎样才能让它发挥作用?

最佳答案

应该是:

awk -F '\t[|]' '{print $1, $2}'

-F 将被评估为正则表达式。将 | 放入字符类中,因为它在正则表达式中具有特殊含义。

或者你可以使用:

awk -F '\t\\|' '{print $1, $2}'

关于linux - 如何使用 '\t|' 字符串作为分隔符使用 awk 拆分字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44327571/

相关文章:

linux - 在 Linux 中编写设备驱动程序

c - 正确使用 malloc

linux - 如何从 Amazon Linux AMI 创建 docker 基础镜像

linux - 关闭 PC 并在使用 BASH 之前做一些事情

linux - 将 hashCat 与 RAR 文件一起使用?

bash - 搜索和追加

awk - 使用 awk 小写某些单词

bash - 打印一行中每个单词的第一个字母

bash - 使用 sed (或类似的)删除重复模式之间的任何内容

linux - 我需要在一行中打印多个结果