如何在GNU Awk 4.2中跳过具有字段宽度的字符?

如何在GNU Awk 4.2中跳过具有字段宽度的字符?,awk,gnu,gawk,Awk,Gnu,Gawk,它包含许多有趣的特性。其中之一是: FIELDWIDTHS解析语法已得到增强,允许指定在字段开始之前跳过多少个字符。它还允许将“*”指定为最后一个字符,表示“记录的其余部分”。使用FIELDWIDTHS拆分字段现在可以正确设置NF。手册中的FieldWidth文档也进行了相当大的重组和改进 我测试了*东西,很好地将最后一个块捕获到$NF: # "*" catches in $NF from the 2+2+1=5th character and until the end $ awk 'BEGI

它包含许多有趣的特性。其中之一是:

  • FIELDWIDTHS解析语法已得到增强,允许指定在字段开始之前跳过多少个字符。它还允许将“*”指定为最后一个字符,表示“记录的其余部分”。使用FIELDWIDTHS拆分字段现在可以正确设置NF。手册中的FieldWidth文档也进行了相当大的重组和改进
  • 我测试了
    *
    东西,很好地将最后一个块捕获到
    $NF

    # "*" catches in $NF from the 2+2+1=5th character and until the end
    $ awk 'BEGIN {FIELDWIDTHS="2 2 *"} {print $NF}' <<< "1234567890"
    567890
    
    #“*”从2+2+1=5个字符直到结尾捕捉$NF
    
    $awk'BEGIN{FIELDWIDTHS=“2*”}{print$NF}

    GNUawk文档有一个部分,其中定义了
    FIELDWIDTHSid。
    该部分/段落还有一些注释,可以说明新功能“在给字段赋值之前跳过字符”

    此处(突出显示)来自:

    字段宽度
    #

    以空格分隔的列列表,告诉
    gawk
    如何使用固定的列边界分割输入。从版本4.2开始,每个 字段宽度可以选择前面加冒号分隔的值 指定字段开始前要跳过的字符数。 将值指定给
    FIELDWIDTHS
    会覆盖对 字段拆分


    实践情况:

    假设我们想在第一个字段前跳过3个字符,在第二个字段前跳过1个字符

    awk 'BEGIN {FIELDWIDTHS="3:2 1:2 *"} {print $1, $2}' <<< "1234567890"
    
    因此
    3:2
    跳过
    123
    并设置
    45
    1:2
    跳过6并设置
    78

    45 78