2
我想通過awk解決bash的浮點運算限制,但是我遇到了一個語法錯誤,我遇到了問題識別。Awk中的算術運算符無效
declare -a mreal=()
for s in $(seq 0 $((${#mint_est[@]} - 1)))
do
mreal=("${mreal[@]}" "$(echo ${mreal_est[$s]} | \
awk -v int="${mint_est[$s]}" -v tot="$mtotal" \
'{printf("%s", $1 + (1.0 - int/$1)*tot)}')")
done
這裏mreal_est
和mint_est
是由4個浮點值的每個和mtotal
是設定爲浮點值的變量的陣列。來自awk的語法錯誤是:
awk: {printf("%s", $1 + (1.0 - int/$1)*tot)}
awk: ^syntax error
awk: {printf("%s", $1 + (1.0 - int/$1)*tot)}
awk: ^syntax error
awk: {printf("%s", $1 + (1.0 - int/$1)*tot)}
awk: ^syntax error
通過循環的每次迭代。我試圖用基於awk的printf
語句中定義的算術的浮點值填充數組mreal
。任何想法如何可以糾正?
怎麼可能被糾正?腳本是否做了不希望的事情,如果是的話,是什麼?發佈一些小樣本輸入和預期輸出。 –
@EdMorton是的,我得到循環中每次迭代的三個語法錯誤。我將編輯該問題以突出顯示錯誤。我期待'mreal'數組會被填充4個基於awk的'printf'語句中定義的算術的浮點值。 – user3210541
'awk'在浮點上並不是特別出色,儘管它至少具有一些能力,這使得它在該領域的'bash'之前略顯領先。你可能想看看'bc'而不是... – twalberg