gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:06:36 25 4
gpt4 key购买 nike

我正在尝试从 bash 命令输出中提取一些信息:

uptime | awk '{print $3}'

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

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

最佳答案

另一种变体(用 cut 替换 awksed):

# "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 中的第一列是原始的正常运行时间秒数)。

关于bash:如何删除最后一个符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14276673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com