Bash
如何使用 Bash 從兩個 txt 文件中添加數字?
我有一個 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