文件内容"测试":
[]# 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"
答案 0 :(得分:3)
假设您的数据位于名为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
它的作用:
[]# 0-CPU0 38.8%, SM: 1/4, ovl: 62
[]#
,第二项是0-CPU0,第三项是38.8%%d
只会给你38 答案 1 :(得分:0)
$ awk '/CPU0/{last=$3} END{sub(/[.].*/,"",last); print last}' test
38
/CPU0/{last=$3}
每当我们到达包含CPU0
的行时,我们会将第三个字段分配给变量last
。
END{sub(/[.].*/,"",last); print last}
在文件末尾,无论文件中出现CPU0
多次,last
都包含最后CPU0
行的值。 sub
命令删除小数点及其后的所有内容。然后,我们打印last
。