Shell gawk FPAT不';t覆盖FS

Shell gawk FPAT不';t覆盖FS,shell,awk,gawk,Shell,Awk,Gawk,我有一个csv文件,格式如下: "a b c","d","e","f", "bla","bla","bli","fff" 官方GNU站点给出的FPAT规定,“给FPAT赋值会覆盖使用FS和FieldWidth的字段拆分。” 但是,我尝试了他们的代码: BEGIN { FPAT = "([^,]+)|(\"[^\"]+\")" } { print "NF = ", NF for (i = 1; i <= NF; i++) { printf("$%d = &

我有一个csv文件,格式如下:

"a b c","d","e","f",
"bla","bla","bli","fff"
官方GNU站点给出的FPAT规定,“给FPAT赋值会覆盖使用FS和FieldWidth的字段拆分。” 但是,我尝试了他们的代码:

BEGIN {
    FPAT = "([^,]+)|(\"[^\"]+\")"
}

{
    print "NF = ", NF
    for (i = 1; i <= NF; i++) {
    printf("$%d = <%s>\n", i, $i)
    }
}
这是一个出乎意料的结果:

NF =  5
$1 = <Robbins,Arnold,"1234>
$2 = <A>
$3 = <Pretty>
$4 = <Street,>
$5 = <NE",MyTown,MyState,12345-6789,USA>
NF=5
$1 = 
我认为默认的FS(空格)没有被覆盖。
有什么想法吗?

FPAT
需要gawk版本4。您从
gawk--version
中得到了什么?GNU Awk 3.1.7。这就是原因!谢谢@jas这里是gawk的功能历史供感兴趣的人参考:好的一面是,3.1.7仍然支持Atari:-)3.1.7的工作是什么??
NF =  5
$1 = <Robbins,Arnold,"1234>
$2 = <A>
$3 = <Pretty>
$4 = <Street,>
$5 = <NE",MyTown,MyState,12345-6789,USA>