簡體   English   中英

對於文件循環-多個條件

[英]For loop through a file - multiple conditions

我有一個包含兩列的文件,想要在bash中編寫一個for循環,該循環從第一列中獲取值,然后減去3並將其乘以第二列中的相應值。 然后將所有值加在一起。

該文件看起來像這樣:

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>

您已獲得完全有效的awk 答案 但是,如果你喜歡使用bash ,只要你只能在整數操作,你可以做的一切bash ,而不需要產卵awkbc

#!/bin/bash
sum=0
while read a b; do
    ((sum=sum+(a-3)*b))
done < file.txt
echo $sum

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM