gpt4 book ai didi

regex - 无法使用正则表达式解析 bash 输出并收集其中的一部分

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:30 25 4
gpt4 key购买 nike

我试图从这个命令的输出中解析出最近的负载 -

[sandeepan@ip-10-169-92-150 ~]$ w
14:22:21 up 17 days, 51 min, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
sandeepa pts/0 115.112.95.170 06:38 43:57 0.51s 0.51s -bash
sandeepa pts/1 115.112.95.170 13:17 4.00s 0.03s 0.00s w

load average之后的第一个:-

                |
\|/
load average: 0.00, 0.01, 0.05

我在用这个,效果很好 -

w | awk '{print $10}' | tr -d ,

但是,我意识到我正在寻找的值可能并不总是第 10 个变量。因此,我试图在这里使用正则表达式,但不幸的是,无法将它与我知道的少数 bash 命令/实用程序中的任何一个一起使用。

我有这个正则表达式,我可以用它匹配所需的值 -

/.*load average:\s([0-9]+\.[0-9]+),.*/m

我试着查看 sed 手册,查看其他一些问题,例如 Using sed to remove unwanted characters from output ,但不太了解如何使我的工作正常进行。

最佳答案

当您知道前后出现的文本时,最好使用执行此操作的后视:检查给定位置的文本,无论该行的其余部分是什么。

鉴于您的示例文件,我将其存储在一个文件中并执行了以下操作:

$ grep -Po '(?<=load average: )[^,]*' file
0.00

意思是:嘿,获取 load average: 之后的所有文本,直到找到一个逗号。

所以如果你有这样一个文件:

$ cat file
14:22:21 up 17 days, 51 min, 2 users, load average: 0.00, 0.01, 0.05
hello how are you, load average: 1.23, 0.01, 0.05

返回结果如下:

$ grep -Po '(?<=load average: )[^,]*' file
0.00
1.23

请注意,man w 可以为您提供有关如何使用某些选项获取此信息以及 man top 的良好提示。

关于regex - 无法使用正则表达式解析 bash 输出并收集其中的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40045950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com