文件“test”的内容:

[]# 0-CPU4    8.9%,   9336/832, 0x5ffe9b88--0x5ffec000
[]# 0-CPU0    13.5%, aa: 4/3, xvl: 35
[]# 0-CPU1    8.6%, SM: 1/4, ovl: 60
[]# 0-CPU0    38.8%, SM: 1/4, ovl: 62

从这个文件中,我想要最后一个CPU0的百分比,即38(忽略小数点)

我使用下面的shell命令,该命令运行良好,想知道是否有更好的方法。
grep CPU0 test | tail -1 | awk '/0-CPU0/ {print $3}' | sed 's/\..*//'
#above command prints "38"

最佳答案

假设您的数据在一个名为test的文件中:

cat test | grep CPU0 | tail -1 | awk '{ printf("%d", $3) }'

grep CPU0 test | tail -1 | awk '{ printf("%d", $3) }' - condensed

awk ' /CPU0/ {a=$3} END{ printf("%d", a) }' test - more condensed

它能做什么:
  • cat将输出测试文件
  • 中的所有行
  • grep CPU0将仅输出包含CPU0的行
  • tail -1将给出grep输出
  • 的最后一行
  • awk将按空格分割[]# 0-CPU0 38.8%, SM: 1/4, ovl: 62
  • 第一项是[]#,第二项是0-CPU0,第三项是38.8%
  • awk的printf %d仅给您38
  • 10-06 05:53