Bash
在 bash 中計算和向上取整數字
我正在努力解決以下問題: 如何通過獲取第一個欄位進行計算以及如何在 shell 中舍入浮點數?
我有一個看起來像(列之間的空間)的文件:
1533 C_P.doc 691 C_M.doc 905 G_S.doc 945 J_Z.doc 1549 J_M.doc 1701 L_B.doc
我想獲取數字列並將每個數字除以 65(但向上取整),然後添加一個包含這些數字的新列(最好在左側)。IE
24 1533 C_P.doc 11 691 C_M.doc 14 905 G_S.doc 15 945 J_Z.doc 24 1549 J_M.doc 27 1701 L_B.doc
我想在 bash 腳本中使用它。是否可以?如有必要,如果這樣更容易,可以刪除中間列。
$$ Ubuntu 14.04 $$
通過
awk
並保持中間欄:awk '{printf("%.f ", ($1/65)+0.5)}1' infile > outfile 24 1533 C_P.doc 11 691 C_M.doc 14 905 G_S.doc 15 945 J_Z.doc 24 1549 J_M.doc 27 1701 L_B.doc
通過
awk
和不通過中間柱:awk '{printf("%.f", ($1/65)+0.5); $1=""}1' infile > outfile 24 C_P.doc 11 C_M.doc 14 G_S.doc 15 J_Z.doc 24 J_M.doc 27 L_B.doc
請注意,它
+0.5
被用作ceil()
函式的替代,它向上舍入到下一個數字。最後1
啟動預設列印。
您可以使用
perl
:$ perl -MPOSIX=ceil -anle '$F[0] = ceil($F[0]/65);print "@F"' file 24 C_P.doc 11 C_M.doc 14 G_S.doc 15 J_Z.doc 24 J_M.doc 27 L_B.doc