Bash 在unix中获取输出的总和

Bash 在unix中获取输出的总和,bash,awk,Bash,Awk,我试图仅使用awk在bashshell中获得输出的总和。我遇到的一个问题是,我只需要在这里使用awk 这是我用于获取输出的代码: awk'{print substr$7,9,4}'emp.txt 这是我得到的输出:忽略输出 7606 6498 7947 4044 1657 3872 4834 8463 9280 2789 9104 这就是我试图求和的方法:awk's=s+substr$7,9,4{print s}'emp.txt 问题是它没有给我正确的输出,应该是9942686,而是给了我如下

我试图仅使用awk在bashshell中获得输出的总和。我遇到的一个问题是,我只需要在这里使用awk

这是我用于获取输出的代码: awk'{print substr$7,9,4}'emp.txt

这是我得到的输出:忽略输出 7606 6498 7947 4044 1657 3872 4834 8463 9280 2789 9104

这就是我试图求和的方法:awk's=s+substr$7,9,4{print s}'emp.txt

问题是它没有给我正确的输出,应该是9942686,而是给了我如下所示的序列和。 省略输出 9890696 9898643 9902687 9904344 9908216 9913050 9921513 9930793 9933582 9942686

我用错代码了吗?或者有没有其他的方法来使用awk,而我用的是错误的方式

以下是我正在处理的示例文件:

Brynlee Watkins F 55已婚2016 778-555-6498 62861 Malcolm Curry M 24已婚2016 604-555-7947 54647 Aylin Blake F 45已婚2015 236-555-4044 80817 Mckinley Hodges F 50已婚2015 604-555-1657 46316 Rylan Dorsey F 51已婚2017 778-555-3872 77160 Taylor Clarke M 23已婚2015 604-555-4834 46624 Vivaan Hooper M 26已婚2016 778-555-8463 80010 吉布森·罗兰M 42已婚2017 236-555-9280 59874 艾莉森·马奥尼F 51单曲2017 778-555-2789 71394 Catalina Frazier F 53已婚2016 604-555-9104 79364

编辑:我想得到输出中重复的数字的总和。假设输出中重复的数字是4826和0028,它们都重复了2次。我只想要这些数字的总和,每次重复都必须算作个体。因此,它们被计为4。因此,这4个数字的期望输出应为9708

Duffy M 33单曲2017年会否236-555-4826 47394 诺兰里德M 27单曲2015 604-555-0028 46622 安雅·霍恩F 54已婚2017 236-555-4826 73270 辛西娅·达文波特F 29已婚2015 778-555-0028 59687 奥斯卡·梅迪纳M 43已婚2016 778-555-7864 73688 Angelina Herrera F 37于2017年结婚604-555-7910 82061 佩顿·雷耶斯F 35已婚2017 236-555-8046 51920

因为您只需要打印一次总金额,所以请在结束模式下进行

awk '{s = s + substr($7, 9, 4)} END {print s}' emp.txt

请您尝试以下awk,并让我知道这是否有助于您。它将始终查找-之后的最后一位数字:

编辑:

输出如下:

4826 9652
0028 56

你的代码中真的是s=s+substr$7、9、4吗?这实际上是一个每行计算的模式,所以幸运的是它可以进行您需要的计算。外圆括号应该是大括号,所以这不是怎么做的?有没有更好的方法来使用awk?在使用END模式之前我已经试过了,它在ENDWell开头附近显示了一个语法错误,如果是END之前的括号表达式,然后它可能会导致错误,因为它是一行中的两个模式,awk通常不允许这样的构造。只有当整个脚本只是一个模式时,才会调用隐式操作。把括号换成大括号,把末端放回去,然后看看会发生什么。非常感谢先生!这对我来说太好了!我只是想知道我是否可以设置一个条件,就好像我只想要在这个输出中重复的那些数字的总和一样。@GaganPreetinghman,请在你的文章中用代码标记发布一次它的示例。@bipli请查看编辑过的问题和带有重复的最后4个数字的示例文件,非常好!加上几句:我只想要最后重复的数字之和。。。那么,除了获得>@gaganpreetinghman外,我还可以使用任何命令吗?请告诉我您在这里指的是哪些重复的数字?请查看编辑后的问题和重复最后4次的示例文件digits@GaganpreetSinghMaan,请检查我的编辑代码,如果这对您有帮助,请告诉我。@Gaganpreetinghman,Veere你能告诉我这对你有帮助吗?
awk -F' |-' '{sum+=$(NF-1)} END{print sum}'  Input_file
awk -F' |-' '
{
  ++a[$(NF-1)];
  b[$(NF-1)]=b[$(NF-1)]?b[$(NF-1)]+$(NF-1):$(NF-1)
}
END{
  for(i in a){
    if(a[i]>1){
     print i,b[i]}
}}
'   Input_file
4826 9652
0028 56