Awk、Sed:如何解析字符串中的值并对其求和
我有一个像这样的字符串,
Cpu(s): 1.9%us, 2.1%sy, 1.5%ni, 94.5%id, 0.8%wa, 0.0%hi, 0.1%si, 0.0%st
它代表我的 unix 机器的 CPU 使用情况。
现在我需要应用 awk 和 sed (我认为)来提取 CPU 的当前负载。我想从字符串中提取“us”、“sy”、“ni”值,然后对它们求和。
该脚本应返回 5.5 (1.9 + 2.1 + 1.5)...您知道如何实现此目的吗?
多谢
I've a string like this
Cpu(s): 1.9%us, 2.1%sy, 1.5%ni, 94.5%id, 0.8%wa, 0.0%hi, 0.1%si, 0.0%st
it represents the Cpu usage of my unix box.
Now I need to apply awk and sed (i think) to extract the current load of my CPUs. I'd like to extract the 'us', 'sy', 'ni' values from the string and then I want to sum them.
The script should return 5.5 (1.9 + 2.1 + 1.5)... do you know how to achieve this?
Thanks a lot
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
好吧,你只需要一个 awk 命令。无需其他工具
well, you just need one awk command. No need for other tools
包含
awk
、sed
和bc
的管道将实现这一目的:给出:
如预期的那样。
awk
将提取三个字段并用+
打印它们:sed
将删除所有%..,
序列,其中..
是任意两个字符(在本例中为us
、sy
和ni
):bc
将对其进行评估并给出答案:A pipeline with
awk
,sed
andbc
will do the trick:gives:
as expected.
The
awk
will pull out the three fields and print them with+
between them:The
sed
will strip out all%..,
sequences where..
is any two characters (us
,sy
andni
in this particular case):The
bc
will evaluate that and give you the answer: