【问题标题】:How to split string with awk using '\t|' sting as a separator?如何使用 '\t|' 用 awk 拆分字符串刺作为分隔符?
【发布时间】:2017-06-02 19:17:34
【问题描述】:

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

$ 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

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

【问题讨论】:

    标签: linux awk


    【解决方案1】:

    应该是:

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

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

    您也可以使用:

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

    【讨论】:

    • 忘记了字段分隔符是一个正则表达式。
    猜你喜欢
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 2020-06-30
    相关资源
    最近更新 更多