的输出w | head -1
可以为我的机器提供 2 个不同的结果:
16:34:42 up 32 days, 3:02, 1 user, load average: 0.14, 0.11, 0.07
14:10:55 up 32 days, 39 min, 1 user, load average: 0.07, 0.13, 0.09
Run Code Online (Sandbox Code Playgroud)
我需要获得负载平均数(例如0.07, 0.13, 0.09
)。如何按load average:
字符串拆分行,以便始终可以获得两种情况的平均负载数?
您还可以使用 awk:
$ w | head -1 | awk '{print $10,$11,$12}'
0.80, 0.84, 0.93
Run Code Online (Sandbox Code Playgroud)
或者,如果字段数是可变的,请使用:
$ w | head -1 | awk '{print $(NF-2),$(NF-1),$NF}'
0.81, 0.82, 0.91
Run Code Online (Sandbox Code Playgroud)
或者,更优雅(感谢@Letitzia):
$ w | head -1 | awk -F "load average: " '{print $2}'
Run Code Online (Sandbox Code Playgroud)
塞德:
$ w | head -1 | sed 's/.*load average: *//'
Run Code Online (Sandbox Code Playgroud)
珀尔:
$ w | head -1 | perl -pe 's/.*load average: *//'
Run Code Online (Sandbox Code Playgroud)
或者
$ w | head -1 | perl -lne '/.*load average: *(.*)/ && print $1'
Run Code Online (Sandbox Code Playgroud)
您实际上可以colrm
在这里使用,但请注意,它删除了定义为“一行中的单个字符”的“列”。因此,虽然它适用于您提供的示例(因为有额外的空间),但如果列数进一步变化,则不会。在这里,它删除了第 1 列到第 51 列
$ w | head -1 | colrm 1 51
Run Code Online (Sandbox Code Playgroud)