我需要25慶典輪4
line= wc -l < file.txt
# 47322487 lines
parts= $line/25
# 1892899.48 after division
round 1892899.48 this to nearest multiple of 4.
我需要25慶典輪4
line= wc -l < file.txt
# 47322487 lines
parts= $line/25
# 1892899.48 after division
round 1892899.48 this to nearest multiple of 4.
處理它的一個非常簡單的方法是先除以100再乘以4,然後再加上50來圍繞數字。
expr '(' $line + 50 ')'/100 '*' 4
正確處理舍入(我忘了!)。如果你打算使用shell算法,我認爲最好使用'echo $(((line + 50)/ 100 * 4))'而不是'expr'。 –
好的解決方法,謝謝 – SSh
獲得的4個最近多個分割線的次數後最接近的整數倍我建議你用awk解決這個問題的全部:
awk 'END { print int((NR/100) + 0.5) * 4 }' file.txt
這通過25 * 4然後使用int
四捨五入的結果,被添加,使得值被舍入到附近4.
0.5乘以背面之前除以行數價值。要總是舍入,可以將其刪除並總是舍入,可以添加1。
該方法對大多數負數給出了錯誤的結果。當數字是4的倍數,例如'awk'{print int(($ 0/4)+1)* 4}'<<< 4'打印時,添加1而不是0.5總是舍入8.當不添加0.5時,負數會向上舍入,而不是向下,例如'awk'{print int(($ 0/4)+1)* 4}'<<< - 3'打印0. – user4669748
@鑑於最初的問題是圍繞文件中行數的四捨五入,該解決方案沒有考慮負數。 –
回合4最接近的倍數,舍入二者6和10至8
awk '{print sprintf("%.0f",$0/4)*4}'
回合4最接近的倍數,總是舍入數,其模數爲4是2或-2了。
jq -R 'tonumber/4+.5|floor*4'
回合4最接近的倍數,舍入總是其模4爲2或-2向上號碼,假設所有數字都是非負的。這給大多數負數提供了錯誤的結果。
awk '{print int(($0/4)+0.5)*4}'
回合高達4.
awk '{print$0+(n-$0%n)%n}' n=4
perl -MPOSIX -lpe'$_=ceil($_/4)*4'
回合的倍數降到4.
awk '{print$0+(n-$0%n)%n}' n=-4
perl -MPOSIX -lpe'$_=floor($_/4)*4'
jq -R 'tonumber/4|floor*4'
awk '{i=int($0/4);print((i==$0||$0>0)?i:i-1)*4}'
回合正數的倍數下降到4個圓負數的倍數達到4的倍數。
awk '{print int($0/4)*4}'
W帽子的價值是你想得到的輸出? –