2
A
回答
3
awk(1)
是因爲它不具有eval()
功能錯誤的工具。我建議修改文件進入輸入bc(1)
或使用shell算術擴展:
while read expr; do
echo "$(($expr))"
done < file
1
- awk沒有的eval()功能可按
- 使用BC或外殼算術擴張既可以把它
- 但如果您在Hadoop腳本使用它,考慮子進程的問題
此外,你可以嘗試以下方法:
- 考慮寫在AWK的expression evaluator(from archive.org,搜索CALC3)
- 使用eval
- 使用Python的eval函數
-1
舉個例子,考慮什麼iftop
爲您提供:
Host name last 2s last 10s last 40s cumulative
1 10.150.1.1 => 650B 533B 533B 2.08KB
85.239.108.20 <= 16.0KB 12.9KB 12.9KB 51.5KB
假設您需要2條上/下行到一行並將KB/B計算爲正確的字節值(* 1024)。你可以有這樣的:
iftop -i eth1 -ts 10 -Bn|egrep "<|>"| sed 's/^ //g;s/^[1-9]/x/g;s/KB/ 1024/g;s/B/ 1/g' | tr -d '\n'|tr "x" '\n'| grep .| awk '{print $1" "$11" - "$9*$10+$19*$20" "$9*$10" "$19*$20 }'
0
我知道這是可怕的,但我們可以:
awk '{system(sprintf("awk \"BEGIN {print " $0 "}\""))}'
如指出,BC,Python中的eval,慶典$(())
,更好的解決方案
最後一個建議Perl:
perl -nE 'say eval'
相關問題
- 1. 在python中傳遞算術表達式而不評估它們
- 2. 評估算術語法樹表達式
- 3. 評估算術表達式時出錯
- 4. 如何評估作爲參數傳遞給方法的Func /委託/表達式?
- 5. 如何在序言中進行算術表達式評估?
- 6. 從左到右或倒數的算術表達式評估?
- 7. 將bash表達式傳遞給AWK用於浮點算術
- 8. 遞歸表達式評估?
- 9. 評估以字符串形式給出的算術表達式
- 10. 無法在SICP評估lambda表達式作爲參數前1.37
- 11. 傳遞表達式作爲參數
- 12. 傳遞lambda表達式作爲參數
- 13. Java遞歸數學表達式評估
- 14. R:使用作爲對象傳遞的參數來評估數據框中的表達式
- 15. 強制評估作爲參數傳遞給函數的對象
- 16. 正則表達式來評估和替換算術運算符操作符
- 17. Spring webflow - 如何在評估表達式中傳遞會話?
- 18. erlang評估算術表達式時發生錯誤
- 19. 方案:如何評估算術表達式
- 20. 編寫Java類,用於評估算術表達式
- 21. 如何使用j2me評估算術表達式?
- 22. 評估數學表達式
- 23. 數學表達式評估
- 24. 數學表達式評估
- 25. 評估Lambda表達式作爲表達式樹的一部分
- 26. 函數是否作爲參數傳遞時進行評估?
- 27. 將未評估的變量作爲參數傳遞
- 28. 參考表達式的評估
- 29. c函數參數評估和傳遞
- 30. 評估表達式
沒有awk:`while read line;做echo $ [line];完成
khachik
2010-11-27 16:37:12
@khachik - 這是一個簡單的例子。實際文件包含2列 - 6 1 * 2 * 3等等,我必須在評估之前拆分這一行。 – Fakrudeen 2010-11-27 17:01:59
你可以用`awk`或別的東西來分割,然後評估算術運算。 – khachik 2010-11-27 17:03:37