Shell命令求和整數,每行一個?我正在尋找一個命令,它將接受多行文本作為輸入,每行包含一個整數,并輸出這些整數的總和。作為一個背景,我有一個日志文件,其中包括時間測量,所以通過grepping相關的行,以及一些sed重新格式化,我可以列出該文件中的所有時間。然而,我想計算出總數,而且我的思緒已經變得空白,因為任何命令我都可以將這個中間輸出傳遞到最終總和。我過去總是使用expr過,但除非它在RPN模式下運行,否則我認為它不會應付這個問題(即便如此,它也會很棘手)。我錯過了什么?鑒于可能有多種方法可以實現這一點,我將很樂意閱讀(并提升)任何有效的方法,即使其他人已經發布了一個不同的解決方案來完成這項工作。相關問題:在Unix上計算一列輸出總和的最短命令?(來自@Andrew)更新:哇,正如所料,這里有一些不錯的答案??雌饋砦乙欢ㄒ猘wk作為命令行工具進行更深入的檢查!
3 回答

繁花如伊
TA貢獻2012條經驗 獲得超12個贊
有點awk應該這樣做嗎?
awk '{s+=$1} END {print s}' mydatafile
注意:如果您要添加超過2 ^ 31(2147483647)的任何內容,某些版本的awk會有一些奇怪的行為。有關更多背景,請參閱評論 一個建議是使用printf
而不是print
:
awk '{s+=$1} END {printf "%.0f", s}' mydatafile

德瑪西亞99
TA貢獻1770條經驗 獲得超3個贊
粘貼通常合并多個文件的行,但它也可用于將文件的各行轉換為單行。分隔符標志允許您將x + x類型方程傳遞給bc。
paste -s -d+ infile | bc
或者,當從stdin管道時,
<commands> | paste -s -d+ - | bc
- 3 回答
- 0 關注
- 1265 瀏覽
添加回答
舉報
0/150
提交
取消