Shell gawk FPAT不';t覆盖FS
我有一个csv文件,格式如下: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 = &
"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>