Bash字符串替换命令结果

时间:2014-12-05 10:30:12

标签: bash shell awk

我有一个简单的bash脚本,它使用正常运行时间和awk获得平均负载,例如

LOAD_5M=$(uptime | awk -F'load averages:' '{ print $2}' | awk '{print $2}')

然而,这包括在负载平均值

末尾的','

e.g。

0.51,

所以我已经用字符串替换替换逗号,如下所示:

LOAD_5M=${LOAD_5M/,/}

我不是一个awk或bash wizzkid所以虽然这给了我想要的结果,但我想知道是否有一种简洁的方式来写这个,或者通过:

  • 使用awk获取不带逗号的平均负载,或
  • 在一行中删除逗号

4 个答案:

答案 0 :(得分:2)

您可以在同一个awk命令中执行此操作:

uptime | awk -F 'load averages?: *' '{split($2, a, ",? "); print a[2]}'
1.32

答案 1 :(得分:1)

/proc/loadavg中有5分钟的加载时间。您只需使用cut

即可
cut -d' ' -f2  /proc/loadavg

使用awk,您可以发出:

awk '{print $2}' /proc/loadavg

如果您不使用Linux,则文件/proc/loadavg将不存在。在这种情况下,我建议使用sed,如下所示:

uptime | sed 's/.*, \(.*\),.*,.*/\1/'

答案 2 :(得分:0)

uptime | awk -F'load average:' '{ print $2}' | awk -F, '{print $2}'
0.38

(我的正常运行时间输出有'加载平均值:'单数)

答案 3 :(得分:0)

负载平均数始终是“正常运行时间”中的最后3个字段。输出如此:

IFS=' ,' read -a uptime_fields <<<"$(uptime)"
LOAD_5M=${uptime_fields[@]: -2:1}