Linux如何将uptime命令输出转换为短格式适配1602LCD屏
解决方案
1. 单行命令实现(优先推荐)
直接使用sed对uptime -p的输出做批量替换即可,自动适配时间单位的单复数场景:
uptime -p | sed -e 's/ days\?/d/g' -e 's/ hours\?/h/g' -e 's/ minutes\?/m/g'
效果验证
原始输入:
up 4 days, 1 hour, 43 minutes
命令输出:
up 4d, 1h, 43m
完全匹配你需要的短格式要求,适配1602 LCD屏的有限显示空间。
如果需要高频调用,可以把命令设置为别名,在~/.bashrc(或你当前使用的shell对应配置文件)中添加如下内容:
alias uptime-lcd="uptime -p | sed -e 's/ days\?/d/g' -e 's/ hours\?/h/g' -e 's/ minutes\?/m/g'"
重载配置后直接执行uptime-lcd即可得到目标输出。
小提示:如果上述命令在你的设备上报语法错误,可尝试兼容版本命令:
uptime -p | sed -r 's/ days?/d/g;s/ hours?/h/g;s/ minutes?/m/g'
2. 轻量Shell脚本实现(无外部依赖,适合嵌入式场景)
如果你的设备资源有限,不想调用额外的sed进程,可以用Bash内置的字符串替换功能实现,脚本内容如下:
#!/bin/bash # 读取原始uptime输出 uptime_raw=$(uptime -p) # 批量替换单位 uptime_raw=${uptime_raw// days/d} uptime_raw=${uptime_raw// day/d} uptime_raw=${uptime_raw// hours/h} uptime_raw=${uptime_raw// hour/h} uptime_raw=${uptime_raw// minutes/m} uptime_raw=${uptime_raw// minute/m} # 输出结果 echo "$uptime_raw"
给脚本添加执行权限后直接运行即可,占用资源更低,更适合嵌入式设备对接1602 LCD的场景。
内容的提问来源于stack exchange,提问作者Ledi
相关产品推荐
相关产品推荐

