Linux shell-以奇怪的格式解析日期



是否有任何方法可以使用标准工具(而不是编程脚本(以自定义的奇数格式解析日期?

我有一个开始脚本(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 ]]进行比较,但问题是,触摸忽略了TIME部分,而ls -lh已经显示,年份被设置为代替时间,因此比较结果无效。

使用GNUdatebash:转换日期

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

相关内容

  • 没有找到相关文章

最新更新