字段和列上的 awk 求和加法 $ - 奇怪的结果
awk sum addition math on fields & colums $ - strange results
请运行这个脚本。我想知道为什么我不能在 BEGIN 中分配 $1、$2 和 $3 以计算和打印它们:
BEGIN {
OFS=FS=";" ;
# @include getopt.awk
geb = 4;
dis = 3;
= 10;
= 0.19;
= 20;
summe = geb+dis+;
colsum = ++
}
{
print FS FS FS "Fee" " "summe FS + FS 3+4+ FS colsum}
例如我希望
print +
给我 30 个?!
我不能为字段分配新值吗?
BEGIN
块发生在 awk 开始处理文件之前,因此分配给各个字段没有意义,因为一旦读取第一条记录,它们就会被覆盖。
如果您希望对 awk 读取的记录执行计算,这应该在一个普通块中完成,就像您正在使用的块 print
。
BEGIN
块在读取任何输入之前执行(除非使用 getline
),因此 none 引用输入的变量,如 NR
, FNR
、NF
、[=16=], , ...
等字段将在任何 BEGIN
块中定义。
实际上 BEGIN
块用于在您阅读第一行之前执行的操作
(除非使用 getline
)- 不推荐
akshay@db-3325:/tmp$ seq 1 5 >test
akshay@db-3325:/tmp$ cat test
1
2
3
4
5
# Default action by awk
akshay@db-3325:/tmp$ awk 'BEGIN{print }' test
# if you use getline
akshay@db-3325:/tmp$ awk 'BEGIN{getline;print }' test
1
请运行这个脚本。我想知道为什么我不能在 BEGIN 中分配 $1、$2 和 $3 以计算和打印它们:
BEGIN {
OFS=FS=";" ;
# @include getopt.awk
geb = 4;
dis = 3;
= 10;
= 0.19;
= 20;
summe = geb+dis+;
colsum = ++
}
{
print FS FS FS "Fee" " "summe FS + FS 3+4+ FS colsum}
例如我希望
print +
给我 30 个?! 我不能为字段分配新值吗?
BEGIN
块发生在 awk 开始处理文件之前,因此分配给各个字段没有意义,因为一旦读取第一条记录,它们就会被覆盖。
如果您希望对 awk 读取的记录执行计算,这应该在一个普通块中完成,就像您正在使用的块 print
。
BEGIN
块在读取任何输入之前执行(除非使用 getline
),因此 none 引用输入的变量,如 NR
, FNR
、NF
、[=16=], , ...
等字段将在任何 BEGIN
块中定义。
实际上 BEGIN
块用于在您阅读第一行之前执行的操作
(除非使用 getline
)- 不推荐
akshay@db-3325:/tmp$ seq 1 5 >test
akshay@db-3325:/tmp$ cat test
1
2
3
4
5
# Default action by awk
akshay@db-3325:/tmp$ awk 'BEGIN{print }' test
# if you use getline
akshay@db-3325:/tmp$ awk 'BEGIN{getline;print }' test
1