【发布时间】:2014-09-10 01:04:17
【问题描述】:
信息
我有一个包含时间信息的字符串。我只需要从此字符串中获取月数。我正在尝试使用sed 来完成此操作,但我还没有太多运气。使用 bash + 命令行工具是我的要求。
当前尝试
echo "1969 years 12 months 25 days 19 hours 38 minutes 24 seconds since last release" | sed -r "s/^([0-9]+).*/\1/"
返回1969
奖金
更一般地说,我的问题是字符串的整个"1969 years 12 months" 部分。我正在使用date 来获取时间差异,但我必须考虑 1970 年的开始日期。我觉得奇怪的是,我当前的输出将 1970 表示为 1969 year and 12 months。
编辑:我正在尝试从这篇文章中使用 nunk 的解决方案:
它适用于一切,除了几个月。月数相差(12 打印的月数)。
【问题讨论】:
-
你为什么不用
grep -Po '(?<=years )\d*(?= months)'?这将打印“年”和“月”之间的数字。 -
如果您不向我们提供原始输入并告诉我们您正在做什么来处理它们,我们将无法解决额外问题。
-
@EtanReisner,我更新了我的帖子,提供了有关全局问题的更多详细信息。
-
什么日期可以让你输出?
-
示例输入:
2014-09-03T14:44:48+00:00和当前日期。