如何使用awk为每一行使用值的总和
我有一个小的txt文件:如何使用awk为每一行使用值的总和,awk,Awk,我有一个小的txt文件: Josh 10 Bill 10 Samanda 30 所有NUM的总和为50。 如何使用此总和分割每行上的值 0.2 # 10/50 0.2 # 10/50 0.6 # 30/50 我的awk脚本无法按预期工作: BEGIN { sum += $2; } { print $2/sum } 它返回0。在打开任何输入文件之前,BEGIN为true,这就是为什么脚本中的sum+=$2除了将sum设置为零之外什么都不做 如果sum为零,三元函数可以防止被零除。在打开任何输
Josh 10
Bill 10
Samanda 30
所有NUM的总和为50。
如何使用此总和分割每行上的值
0.2 # 10/50
0.2 # 10/50
0.6 # 30/50
我的awk脚本无法按预期工作:
BEGIN {
sum += $2;
}
{
print $2/sum
}
它返回0。在打开任何输入文件之前,BEGIN为true,这就是为什么脚本中的sum+=$2除了将sum设置为零之外什么都不做
如果sum为零,三元函数可以防止被零除。在打开任何输入文件之前,BEGIN为true,这就是为什么脚本中的sum+=$2除了将sum设置为零外,什么都不做
如果和为零,三元是为了防止被零除。请您尝试以下内容,并用GNU awk中显示的样本编写和测试 说明:增加对以上内容的详细说明
awk ' ##Starting awk program from here.
{
val[NR]=$2 ##Creating array val whose index is current line number and value is 2nd field of current line.
sum+=$2 ##Creating sum which has 2nd column value in it which is keep on getting added in it.
}
END{ ##Starting END block of this code here.
for(i=1;i<=NR;i++){ ##Starting a for loop from i 1 to till value of count here.
print sum?val[i]/sum:0 ##Printing val[i]/sum value here if sum is NOT NULL else printing 0 here.
}
}
' Input_file ##Mentioning Input_file name here.
请您尝试以下,书面和测试显示的样本在GNU awk 说明:增加对以上内容的详细说明
awk ' ##Starting awk program from here.
{
val[NR]=$2 ##Creating array val whose index is current line number and value is 2nd field of current line.
sum+=$2 ##Creating sum which has 2nd column value in it which is keep on getting added in it.
}
END{ ##Starting END block of this code here.
for(i=1;i<=NR;i++){ ##Starting a for loop from i 1 to till value of count here.
print sum?val[i]/sum:0 ##Printing val[i]/sum value here if sum is NOT NULL else printing 0 here.
}
}
' Input_file ##Mentioning Input_file name here.
你几乎不接受任何问题的答案。请查看,以提醒您在得到答案时要做什么。你几乎不接受任何问题的答案。请查看,以提醒您在得到答案时要做什么。
awk ' ##Starting awk program from here.
{
val[NR]=$2 ##Creating array val whose index is current line number and value is 2nd field of current line.
sum+=$2 ##Creating sum which has 2nd column value in it which is keep on getting added in it.
}
END{ ##Starting END block of this code here.
for(i=1;i<=NR;i++){ ##Starting a for loop from i 1 to till value of count here.
print sum?val[i]/sum:0 ##Printing val[i]/sum value here if sum is NOT NULL else printing 0 here.
}
}
' Input_file ##Mentioning Input_file name here.