【发布时间】:2017-02-12 09:44:10
【问题描述】:
w 命令产生如下内容:
01:19:02 up 53 days, 10:44, 15 users, load average: 0.00, 0.02, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
higrheht pts/5 c-13-76-207-161. 23:21 2:05 0.07s 0.07s -bash
sgergrgr pts/6 c-97-164-31-14.h 00:54 2.00s 0.04s 0.04s -bash
jwegrgrng pts/14 c-23-71-12-251.h 22:48 8:03 0.07s 0.06s vim s2
hiqrefan pts/18 c-13-31-206-169. 23:19 0.00s 0.01s 0.01s -bash
hqeffran pts/19 c-19-71-206-169. 23:19 1:58m 0.02s 0.02s -bash
aqrgri pts/20 c-84-6-212-27.hs 23:21 0.00s 0.19s 0.17s -bash
我必须得到一个 sed 脚本来打印空闲时间最长的用户。但问题是 w 以 3 种不同格式显示空闲时间:1) 以秒为单位:以 's' 结尾,2) mm:ss(不以 'm' 或 's' 结尾),以及 3) hh: mm(以“m”结尾)。所以我需要以某种方式制作一个可以使用它的 sed 脚本,但我似乎无法做到。
我的尝试: 有 2 个变量将首先设置,以找出最高空闲时间是形式 1 还是 2 或 3。那部分已经完成。然后基于此,我将提取该空闲字段中的文本并将其与变量进行比较,如果时间较长则替换。但它最后有一个字母!所以它不能作为一个数字来比较。它是一个字符串。这就是问题所在。
BEGIN{view1=0
view3=0
userid=""
idlemax=""}
NR>2{
if($5 ~ /s$/)
{
view2=1
}
if($5 ~ /m$/)
{
view3= 1
}
}
【问题讨论】: