如何在bash脚本中删除十进制pints?

时间:2018-03-14 08:09:34

标签: bash awk

我已尝试使用以下代码在%中打印内存使用情况。它打印答案如下,

71.2505 - 我需要71%的答案..我可以解决这个问题吗?

free | grep Mem | awk '{print $3/$2 * 100}'

2 个答案:

答案 0 :(得分:1)

到目前为止,您至少有三个选项。 (1)从变量中的命令替换中捕获输出,然后使用简单的参数扩展和子串删除从右侧放弃小数,例如

val=$(free | grep Mem | awk '{print $3/$2 * 100}'); echo ${val%.*} 

接下来@melpomene建议,使用awk

的int(...)操作
awk '{print int($3/$2 * 100)}'

最后,您可以将printf%d 格式说明符一起使用来丢弃小数,例如:

free | grep Mem | awk '{printf "%d\n", $3/$2 * 100}'

注意:另一个,也许更好的格式说明符代替%d%.0f来保留浮点字符,而修剪附加小数)

任何一方都可以。

答案 1 :(得分:0)

awk不需要:

  1. POSIX shell方法,( ie bashdash et al ):< / p>

    free | { read; read a b c d; echo $((c*100/b)); }
    
  2. POSIX shell:

    set -- `free` ; echo $(($9*100/$8))
    
  3. bash

    m=(`free`) ; echo $((m[8]*100/m[7]))