首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >For循环遍历文件-多个条件

For循环遍历文件-多个条件
EN

Stack Overflow用户
提问于 2017-06-13 23:46:48
回答 2查看 111关注 0票数 0

我得到了一个有两列的文件,并希望在bash中编写一个for循环,该循环从第一列中获取值,减去3,然后将其乘以第二列中的相应值。然后将所有值相加在一起。

该文件如下所示:

代码语言:javascript
运行
复制
1  3
2  5
7  8
4  30

然后我想要一个循环,它可以:

代码语言:javascript
运行
复制
1-3 * 3
+ 2-3*5
+ 7-3*8
+ 4-3*30

我已经有了一个for循环,它看起来像这样:

代码语言:javascript
运行
复制
 for ( p in $( awk '{ print $1; }' file.txt ) 

 do

   total=$(echo $total+($p-3) | bc )
   ((count++))
 done

  echo " $total" | bc > file2.txt

这是可行的。但是,我可以做些什么来包含与文件的另一列的乘法呢?

以下想法不起作用:

代码语言:javascript
运行
复制
for ( p in $( awk '{ print $1; }' file.txt ) && k in $( awk '{ print $2; }'       file.txt )).
EN

回答 2

Stack Overflow用户

发布于 2017-06-13 23:52:19

代码语言:javascript
运行
复制
awk '{ sum += $2*($1-3); } END{ print sum; }' <input file>
票数 1
EN

Stack Overflow用户

发布于 2017-06-13 23:53:26

您已经获得了完全有效的awk answer。但是,如果您更喜欢使用bash,只要您只对整数进行运算,您就可以在bash中执行所有操作,而不需要生成awkbc

代码语言:javascript
运行
复制
#!/bin/bash
sum=0
while read a b; do
    ((sum=sum+(a-3)*b))
done < file.txt
echo $sum
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44526148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档