加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash:如何删除最后一个符号

发布时间:2020-12-15 22:30:13 所属栏目:安全 来源:网络整理
导读:我正在尝试从bash命令输出中提取一些信息: uptime | awk '{print $3}' 运行时,我得到了这个结果:8:27, 如何删除最后一个符号(即逗号)? 解决方法 另一种变体(用切割代替awk和sed): # "unnecessary" echo with evil backticks to get rid of extra spaces
我正在尝试从bash命令输出中提取一些信息:

uptime | awk '{print $3}'

运行时,我得到了这个结果:8:27,

如何删除最后一个符号(即逗号)?

解决方法

另一种变体(用切割代替awk和sed):

# "unnecessary" echo with evil backticks to get rid of extra spaces
echo `uptime|cut -d,-f1'

似乎工作…直到正常运行时间达到一天(感谢@sudo_O指出).然后输出格式将包括天数,我们需要

echo `uptime|cut -d,-f2`

(后者是我最初的答案,因为我测试了正常运行时间> 24小时).

UPD:两种解决方案都没有真正起作用:后者打印正常时间没有天,前者无法提取小时数,因为当没有天时,它们之前没有逗号分隔符 – 但其余的答案实际上是由那些人证明的故障.

整个方法容易出错.几个月和几年后会发生什么? (我似乎记得它仍然显示N天,但我可以犯错).如果正常运行时间本地化怎么办? (他们是否因为现有脚本而拒绝这样做?)它为1个用户,“1个用户”或“1个用户”显示了什么?如果我们知道所有答案,我们是否要依赖它们?

如果我们的目的是向用户显示正常运行时间,则使用正则表达式在“up”和“users”之间提取部分可以解决问题:

uptime | sed 's/^.*up(.*),*[0-9]+ *users.*$/1/'

如果我们想比较时间或收集统计信息,那么像Linux特定的/ proc / uptime这样的东西会更好(/ proc / uptime中的第一列是原始运行时间秒).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读