【问题标题】:Linux shell - parse date in odd formatsLinux shell - 以奇怪的格式解析日期
【发布时间】:2021-06-05 01:03:57
【问题描述】:

有没有什么方法可以使用标准工具(不是编程脚本)以自定义的奇怪格式解析日期?

我有一个启动脚本 (bash),它应该处理程序的输出,其中包含格式非常奇怪的日期(如 2021 年 1 月 4 日,下午 1:20:30 - 这将是一个类似的模式"MMM, d, yyyy, h:mm:ss a"。

可以使用 sed 或 awk 提取令牌,但处理它们是一场噩梦,尤其是月份快捷方式(它们与系统使用相同的语言,但该语言可以是特定于安装的)或小时(需要检查 AM/PM 令牌,如果是 PM,则添加 12)。

'date' 显然不支持,但可能是一些 shell 扩展或工具包包?或者我运气不好,我需要使用 sed/cut/awk 逐个令牌解析这个糟糕的格式令牌?

我尝试在删除逗号后执行touch -d "Date"(这样我就可以将日期与[[ file1 -ot file2 ]] 进行比较,但问题是,触摸忽略了时间部分,而ls -lh 已显示, 表示年份代替了时间,所以比较的结果是无效的。

【问题讨论】:

  • 请将该示例输入的所需输出(无描述、无图像、无链接)添加到您的问题(无评论)。
  • @Cyrus 我搜索了 linux 解析日期模式,解析自定义/奇数格式,但我发现的工作示例是 python...

标签: bash date


【解决方案1】:

使用 GNU datebash 转换日期:

d="Jan, 4, 2021, 1:20:30 PM"

IFS=',:' read mon day year hour min sec a <<<"$d"
date -d "$mon $day $year $hour:$min:$sec $a" '+%Y-%m-%d %H:%M:%S'

输出:

2021-01-04 13:20:30

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多