是否有任何方法可以使用标准工具(而不是编程脚本(以自定义的奇数格式解析日期?
我有一个开始脚本(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
已经显示,年份被设置为代替时间,因此比较结果无效。
使用GNUdate
和bash
:转换日期
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