如何使用awk为每一行使用值的总和

如何使用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为零,三元函数可以防止被零除。在打开任何输

我有一个小的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为零,三元函数可以防止被零除。

在打开任何输入文件之前,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.