For循环遍历一个文件 - 多个条件
我得到了一个有两列的文件,并且想要在bash中写一个for循环,该循环从第一列中取出值,将其减去3并将其乘以第二列中的相应值。 然后将所有值一起添加。For循环遍历一个文件 - 多个条件
的文件看上去例如像这样:
1 3
2 5
7 8
4 30
那么我想一个循环的作用:
1-3 * 3
+ 2-3*5
+ 7-3*8
+ 4-3*30
我已经一个for循环看起来像这样:
for (p in $(awk '{ print $1; }' file.txt)
do
total=$(echo $total+($p-3) | bc)
((count++))
done
echo " $total" | bc > file2.txt
这有效。但是我能做些什么来包含与文件另一列的乘法?
以下想法行不通:
for (p in $(awk '{ print $1; }' file.txt) && k in $(awk '{ print $2; }' file.txt)).
awk '{ sum += $2*($1-3); } END{ print sum; }' <input file>
谢谢!但是我能做些什么来进行更复杂的积分迭代。如果我想乘以xi + 1 -xi * yi。 – Dontwastetime
我的意思是我需要更多的专栏。我能做一些能够保持我的版本的foor循环但包含另一个条件的东西吗? – Dontwastetime
当然,只需在awk脚本中添加另一个命令即可。你的循环版本真的不是一个好的方法。这些类型的问题是awk设计要处理的问题。 https://edm00se.io/assets/images/post_images/right-tool-for-job-jekyll/scottySays.jpg – Jack
'的awk“{总+ =($ 1 - 3 )* $ 2} END {print total}'file.txt' – Phylogenesis
如果您不使用圆括号,说明与计算不匹配...'(1-3)* 3!= 1-3 * 3' – karakfa
当然是的;) – Dontwastetime