如何计算符合特定条件的值?

Moh*_*awy 2 shell-script text-processing

例如,我有包含列数的文件

输入文件

12  15  27  
5   6  48  
19  16  25  
17  23  37
Run Code Online (Sandbox Code Playgroud)

等等

例如,我想计算第X2 列中满足以下条件的所有数字 ( )6 <= X < 20

所以结果将3对应于数字15616

Ste*_*ris 11

这在像这样的工具中很容易 awk

awk '$2>=6 && $2<20 { tot++ } END { print +tot}'
Run Code Online (Sandbox Code Playgroud)

如果你想总结他们然后

awk '$2>=6 && $2<20 { tot += $2 } END { print +tot}'
Run Code Online (Sandbox Code Playgroud)

  • 数数,而不是求和。 (4认同)
  • `print +tot` 代替 `print tot` 在没有符合条件的记录时报告 `0` (3认同)
  • 编辑回滚;我对编写零努力的代码没有任何依恋。我_故意_将两个版本都留在那里以显示两个版本之间的相似之处,这可以帮助人们学习 awk 以识别标准模式和解决方案。 (3认同)
  • 谢谢; 为两个变体修改了答案,只是为了完整性:-) (2认同)