bashを使用してhtmlファイルからいくつかの値を解析しようとしています。したがって、次の数字を含む大きなテキストファイルがあります。
3
2
4
2
私が望むのは、2行を取り、2つの数を掛けて、変数に値を格納して合計に追加することです。この場合は と に3*2=6
なります4*2=8
。だからX=0, X=X+6, X=X+8
。X=14
答え1
努力する
xargs -n2 < file | while read x y; do ((X+=x*y)); echo $X; done
xargs -n2
: 数字をペアにグループ化read x y
:最初と2番目の数字を変数に保存x
します。y
((...))
Bashでの算術評価
合計がどのように増加するかを画面で見ることができます。
答え2
paste
以下を使用して必要なbc
ものを実行できます。
$ paste -d"*" - - <file.txt | paste -d"+" - - | bc
14
崩れる
paste
ここでは、一度に2つずつ取り、それらの間に乗算記号を入れることがわかります。
$ paste -d"*" - - <file.txt
3*2
4*2
同様のアプローチを使用して乗算記号を含めることができます。
$ paste -d"*" - - <file.txt | paste -d"+"
3*2+4*2
最後に、完成した文字列を渡してbc
数学演算を実行できます。
$ paste -d"*" - - <file.txt | paste -s -d'+' | bc
14
paste
上記のコマンドの使用法はさまざまです。 X * Yを形成するために行マージを実行するときに、Pasteに2行(ダッシュで示されている:)を使用するように指示します- -。 2番目のケースでは、paste
文字全体を使用し、+各原子間に1つずつマージします。
答え3
解決策は次のとおりですawk
(行数が偶数であると仮定)。
awk '{y=$0; getline x; var += x*y};END{print var}' file.txt