我想为我的awk脚本的BEGIN
部分中的文件创建标头,但要做到这一点,我需要知道有多少个字段。我可以在主要部分进行检查以检查NR==1
是否会在每一行进行评估,从而放慢速度。如何在处理之前获取AWK中的字段数
以下是我尝试使用一行代码。
fields.txt
a 1
b 2
c 3
结果:
awk 'NR==1{a=NF; print "before begin, there are ", a, "fields"}BEGIN{print "there are ", a, "fields"}{print a"\t"$0}END{print "there were", a, "fields"}' fields.txt
there are fields
before begin, there are 2 fields
2 a 1
2 b 2
2 c 3
there were 2 fields
我想在BEGIN块中的前一块之前仍然得到评价。我是否真的完成了自己的目标,还是NR==1
支票仍然在每条线上进行评估?
编辑 所以只是把透视为什么我试图做到这一点,我
- 我有一个文件,说的方式100K的行和列40
- 此文件是流水线中另一个进程的输出,其中awk脚本是最后一步
- 我正在计算基于其他行的两行并将它们添加到输出中
- 我希望最终文件包含头反光贴ts这两个新添加的列
“BEGIN”块内不可能有 – Inian
“BEGIN”出现在输入句点的处理之前。从技术上讲,文件没有多个字段(至少从awk的角度来看)只有一行。如果你想要第一行的字段数,'NR == 1'是正确的选择。 – JNevill
难道你不想检查每一行的字段数? – karakfa