Bash

如何使用 Bash 從兩個 txt 文件中添加數字?

  • February 21, 2019

我有一個 txt 文件,其中包含一些這樣的數字:

1  
2  
3  
4  
5  

我還有另一個 txt 文件,其中包含相同數量的行,但有其他數字:

6  
7   
8  
9  
10

我想把它們加在一起,即1+6、2+7、3+8等。腳本怎麼寫?

順便說一句,到目前為止,我已經得到了各種各樣的答案,只有在我對我的文件進行了嘗試之後,我才意識到有些方法無法處理小數。我的一些文件包含小數,我需要準確,所以如果您想添加答案,您能否展示一種可以準確計算小數的方法。謝謝。

這是許多工具可以解決的基本任務;paste+awk組合似乎非常方便:

$ paste file1 file2 | awk '{$0=$1+$2}1'
7
9
11
13
15

沿著這paste條線,但用以下方法進行數學運算bc

$ paste -d+ file1 file2 | bc
7
9
11
13
15

中間結果(之前bc):

$ paste -d+ file1 file2
1+6
2+7
3+8
4+9
5+10

對於更以 bash 為中心的解決方案,並假設 file2 的行數至少與 file1 一樣多:

mapfile -t file1 < file1
mapfile -t file2 < file2
for((i=0; i < ${#file1[@]}; i++))
do
 printf '%d\n' $((file1[i] + file2[i]))
done

…對於非整數,結合這些想法:

mapfile -t file1 < file1
mapfile -t file2 < file2
for((i=0; i < ${#file1[@]}; i++))
do
 printf '%d + %d\n' "${file1[0]}" "${file2[0]}" | bc
done

引用自:https://unix.stackexchange.com/questions/501486