在此页面 https://www.gnu.org/software/gawk/manual/html_node/More-CSV.html,让此示例在 awk 上使用 csv 文件。
这个例子效果很好!
但是,我无法理解这段代码中的
fpat+0
:
BEGIN {
fp[0] = "([^,]+)|(\"[^\"]+\")"
fp[1] = "([^,]*)|(\"[^\"]+\")"
fp[2] = "([^,]*)|(\"([^\"]|\"\")+\")"
FPAT = fp[fpat+0]
}
这意味着什么?
从OP的链接我们看到
gawk
脚本是如何调用的:
$ gawk -v fpat=2 -f test-csv.awk sample.csv
如果用户没有提供
-v fpat=...
子句会发生什么?
在
(g)awk
中,向未定义的变量添加零(例如,fpat+0
)将生成0
:
$ awk 'BEGIN {print fpat+0}'
0
关于引用的
gawk
代码,当 fpat+0
生成 0
时,我们最终使用 fp[0]
作为 default 模式。