
我正在嘗試使用 bash 解析 html 文件中的某些值。所以我有一個很大的文本文件,其中包含這樣的數字
3
2
4
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
:將第一個和第二個數字儲存在變數中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 條線(表示為破折號:)- -。在第二種情況下,我們使用paste
整個字元系列並+在每個原子之間合併一個。
答案3
這是一個awk
解(假設行數為偶數)
awk '{y=$0; getline x; var += x*y};END{print var}' file.txt