我想从正常运行时间中减少输出
20:10 up 23 days, 3:28, 3 users, load averages: 3.84 1.06 0.64
Run Code Online (Sandbox Code Playgroud)
所以它只是显示:
23 days
Run Code Online (Sandbox Code Playgroud)
我尝试使用sed,但我不确定它是适合这项工作的工具,并且没有太多使用它的经验.
如何实现我想要的输出?
dmc*_*kee 13
考虑使用cut.
uptime | tr "," " " | cut -f6-8 -d" "
Run Code Online (Sandbox Code Playgroud)
似乎可以在我的MacBook上运行.在这里,我也常常tr杀死一个无关的",".短期和长期运行时间的格式存在一些问题.
可能的sed解决方案:
uptime | sed 's/.*up \([^,]*\), .*/\1/'
Run Code Online (Sandbox Code Playgroud)
它不依赖于输出中出现的字符串"days" uptime.
你可以在没有任何外部工具的情况下使用shell
$ var="20:10 up 23 days, 3:28, 3 users, load averages: 3.84 1.06 0.64"
$ var=${var/#*up}
$ echo ${var%%,*}
23 days
Run Code Online (Sandbox Code Playgroud)
小智 5
上述解决方案仅显示天数或小时数。我意识到这就是 OP 正在寻找的内容,但我也在寻找包括小时和分钟在内的内容。这会显示系统运行超过一天的天数和小时/分钟,或者仅显示系统运行不到一天的小时数:
uptime | sed 's/^.* up \+\(.\+\), \+[0-9] user.*$/\1/'
Run Code Online (Sandbox Code Playgroud)
黑带正则表达式忍者 Zach W 的道具让这个工作。
我认为这是最简单的解决方案:
uptime | awk '{print $3}'
Run Code Online (Sandbox Code Playgroud)
正常运行时间| awk'{print $ 3}'
10