【问题标题】:multiple field separator in awkawk中的多个字段分隔符
【发布时间】:2014-11-13 09:15:57
【问题描述】:

我正在尝试处理具有两个字段分隔符 ;space 的输入。我可以使用以下分隔符解析输入:

echo "10.23;7.15;6.23" | awk -v OFMF="%0.2f" 'BEGIN{FS=OFS=";"} {print $1,$2,$3}'
10.23;7.15;6.23

对于带有两个分隔符的输入,我试过了,但它没有解析两个分隔符:

echo "10.23;7.15 6.23" | awk -v OFMF="%0.2f" 'BEGIN{FS=OFS=";" || " "} {print $1,$2,$3}'

【问题讨论】:

    标签: awk


    【解决方案1】:

    您想将 FS 设置为字符列表:

    awk -F'[; ]' 'script' file
    

    您尝试设置的另一个内置变量名为OFMT,而不是OFMF

    $ echo "10.23;7.15 6.23" | awk -F'[; ]' -v OFMT="%0.2f" '{print $1,$2,$3}'
    10.23 7.15 6.23
    
    $ echo "10.23;7.15 6.23" | awk 'BEGIN{FS="[; ]"; OFS=";"; OFMT="%0.2f"} {print $1,$2,$3}'
    10.23;7.15;6.23
    

    【讨论】:

    • 感谢它的工作。是的,它是OFMT。错字。如何修改它以忽略输入中的特定字符( &)
    • 这听起来像是一个单独的问题。
    • 发布一个带有示例输入和输出的新问题。
    • 这应该做同样的事情:-F';| '-F'[; ]。逗号或空格与逗号或空格之一的组。
    • 是的,当您需要在 RE 中使用字符列表时,您可以随时将它们写成 a|b|c|d|e|f|g 而不是 [abcdefg],如果您觉得这样有用的话。
    猜你喜欢
    • 2013-03-17
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多