编辑子:是。我在开发了之后发表评论,并在Mac OS X,CentOS和Ubuntu上进行了检查。一种班轮兼容POSIX的命令,用于将“X分钟Y秒”格式转换为秒。 这就是问题。
echo $(($(echo "5 minutes 10 seconds" | cut -c1-2)*60 + $(echo "5 minutes 10 seconds" | cut -c1-12 | awk '{print substr($0,11)}')))
OP通过评论告诉我他希望“X分钟Y秒”格式不适用于HH:MM:SS
格式。带有date
和"+%s"
的命令在(我的)Mac上发生错误。 OP希望从“X分钟Y秒”格式获取数值并将其转换为秒。第一I中提取数位(把它作为方程A)的分:
echo "5 minutes 10 seconds" | cut -c1-2)
然后我萃取秒部分(把它作为方程B):
echo "5 minutes 10 seconds" | cut -c1-12 | awk '{print substr($0,11)}'
60现在相乘分钟,然后添加与其他:
echo $((equation A)*60) + (equation B))
OP应该问别人使用它自动重新之前检查命令我发育版本(但工作)像我们在生产服务器上用cron做的一样。
如果我们想在一个日志文件上运行这个值为“X分钟Y秒”格式的值,我们必须像命令一样将echo "5 minutes 10 seconds"
更改为cat file | ...
。I kept a gist of it too如果我或其他人需要,我们可以使用它与cat
运行在与日志格式x minutes y seconds
类似的服务器日志文件。
虽然偏离主题(我的理解,问题还没有很多工作要做,当前时间),这是不工作的POSIX兼容的操作系统以秒为单位获取当前时间:
date -d "1970-01-01 00:00:00 UTC 5 minutes 10 seconds" "+%s"
它会抛出错误在MacOS X上,但在大多数GNU/Linux发行版上工作。 +%s
部分会在复杂的使用情况下在POSIX兼容的操作系统上抛出错误。这些命令大多适用于符合任何一种UNIX的操作系统一样对POSIX秒获得当前时间:
awk 'BEGIN{srand(); print srand()}'
perl -le 'print time'
如果OP需要可以在几秒钟内产生电流的时间延长,并减去。我希望这会有所帮助。
----编辑先老答案----
您可以获取当前时间不说date
- echo | awk '{print systime();}'
或wget -qO- http://www.timeapi.org/utc/now?\\s
。其他将时间转换为秒的方法是echo "00:20:40.25" | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }'
。
在另一个答案中显示的printf
的示例接近完美。
你想要的东西总是需要通过的GNU/Linux的基本工具 - gnu.org/../../../../../Setting-an-Alarm.html
这样才能真正方法取决于你有多少万无一失的方法需要。
我没有给予好评答案的原因是因为这并没有回答我的问题。我试图以“5分10秒”的格式转换一个字符串。如果我已经以“hh:mm:ss”的形式拥有它,那么它确实很容易 –