使用awk在循环值求和时遇到麻烦

约书亚·特里姆(Joshua Trimm)

我正在尝试获取总和,36962以便$TOTAL在脚本末尾与之呼应,但我无法使其起作用。有什么建议吗?这是一个学校项目,我对Bash感到非常生疏。

TOTAL=0
while read p; do
    awk '{ if ($1 > 100 ) print TOTAL+=$1}'
    echo $TOTAL
done < ipuniq.txt
  • 6578
  • 6723
  • 32735
  • 36962
  • 回声-> 0
jesse_b

TOTAL变量是一个shell变量,因此awk不会知道。在您的awk命令中,TOTAL变量在每次迭代中均未设置,因此每次都将其重置为单个值,然后进行打印。

此外,awk在这样的循环中使用似乎毫无意义

awk 可以使用以下1个衬管自行执行此操作:

awk '$1 > 100 { total+=$1 } END { print total }' ipuniq.txt

无需循环或其他命令。


但是,如果您的作业需要使用bash / shell,则可以执行以下操作:

total=0
while read -r p _; do
    ((p>100)) && total=$((total+p))
done < ipuniq.txt
echo "$total"

这将使用Shell算术表达式来检查的值p是否大于100,如果大于100,则会将其添加到中total

另外请注意:我已经在-r您的read命令中添加了该选项,因为这将按字面显示反斜杠(对于您的用例来说可能是不必要的,但我宁愿一直使用-r,除非我有特别的理由不这样做)。

我还添加了_参数名称,这将防止p被设置为不需要的输入。read会将所有剩余的单词分配给最后一个参数,因此在您的情况下,您的文件包含数字和IP,例如:

1 10.10.10.10
2 10.10.10.11

如果没有参数来解决问题,p则将其设置为:

p='1 10.10.10.10'

然后:

p='2 10.10.10.11'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用$#和循环处理脚本时遇到麻烦

来自分类Dev

使用指针时遇到麻烦

来自分类Dev

使用简单的awk脚本遇到麻烦

来自分类Dev

使用Javascript要求AWS时遇到麻烦

来自分类Dev

在getElementById内使用变量时遇到麻烦

来自分类Dev

使用多个对象时遇到麻烦

来自分类Dev

使用fmod设置setMusicSpeed()时遇到麻烦

来自分类Dev

在使用javascript sort()命令时遇到麻烦

来自分类Dev

Laravel PHP:使用nest()时遇到麻烦

来自分类Dev

使用Jsoup登录网站时遇到麻烦,

来自分类Dev

我在使用BaseAdapter时遇到麻烦

来自分类Dev

使用PHPunit测试代码时遇到麻烦

来自分类Dev

在使用线程向另一个网站发出GET请求和POST请求时遇到麻烦

来自分类Dev

角度数据-将更新值绑定到范围时遇到麻烦(使用滑块)

来自分类Dev

使用Selenium Web Driver提取我想要的值时遇到麻烦

来自分类Dev

角度数据-将更新值绑定到范围时遇到麻烦(使用滑块)

来自分类Dev

尝试使用forall循环求和矩阵中的所有元素时遇到错误

来自分类Dev

分页时遇到麻烦

来自分类Dev

我在提取xml标签值时遇到了麻烦

来自分类Dev

传递'value ='attr(PHP)的值时遇到麻烦

来自分类Dev

用awk求和时缺少值

来自分类Dev

使用Github遇到麻烦

来自分类Dev

使用XPATH遇到麻烦

来自分类Dev

在使用解析时使用nil可选遇到麻烦

来自分类Dev

在 for 循环中求和值时获取 NaN

来自分类Dev

Tilde〜在Mac上使用fstream时遇到麻烦

来自分类Dev

使用Swift初始化属性时遇到麻烦

来自分类Dev

使用多索引处理日期索引时遇到麻烦

来自分类Dev

使用ActionListener更改变量时遇到麻烦

Related 相关文章

热门标签

归档