複数の列のデータを含むファイルを読み取り、2 番目の列の各値を 3 番目の列の各値で乗算し、これらすべての乗算の結果を加算する Bash スクリプトを作成しようとしています。
たとえば、ファイルが次のようになっているとします。
Column 1 Column 2 Column 3 Column 4
genome 1 30 500
genome 2 27 500
genome 3 83 500
...
スクリプトは 1*30 を掛けて 30 にし、次に 2*27 を掛けて 54 (そしてそれを 30 に足す)、次に 3*83 を掛けて 249 (そしてそれを 84 に足す) など.
awk を使用して入力ファイルを解析しようとしましたが、操作を行ごとに進める方法がわかりません。現在、最初の行が読み取られ、変数に対する操作が実行された後に停止します。
これまでに書いたものは次のとおりです。
for file in fileone filetwo
do
set -- $(awk '/genome/ {print $2,$3}' $file.hist)
var1=$1
var2=$2
var3=$((var1*var2))
total=$((total+var3))
echo var1 \= $var1
echo var2 \= $var2
echo var3 \= $var3
echo total \= $total
done
すべてに「while read」ループを配置しようとしましたが、変数を各行で更新できませんでした。私はこれについて間違った方法で行っていると思います!
私は Linux と Bash のスクリプト作成に非常に慣れていないので、どんな助けでも大歓迎です!