如何将日期从“Oct 01 20:00”转换为“Oct 1 20:00”格式(空格填充)?

如何将日期从“Oct 01 20:00”转换为“Oct 1 20:00”格式(空格填充)?

这里Oct 01必须打印为Oct 1没有 0 的 ie。我需要在 Oct 和 1 之间有两个空格,例如Oct 1

答案1

使用 GNU date

date -d "Oct 01 20:00" "+%b %_d %k:%M"

在哪里:

  • %b:区域设置的月份名称缩写(例如 Jan)
  • %_d:一月中的某一天(空格填充)
  • %k:小时(0..23)
  • %M:分钟 (00..59)

输出:

Oct  1 20:00

答案2

如果您想在某些文本中找到这些字符串时进行转换,并且仅当它们遵循特定Mmm dd HH:MM模式时,在 GNU 或 FreeBSD 系统(及其衍生系统)上,您可以这样做:

sed -E "s/($(locale abmon|tr ';' '|')) 0([0-9] [0-2][0-9]:[0-5][0-9])/\1  \2/g"

它从 的输出中获取月份名称缩写列表,locale abmon以便适应调用者的本地化偏好。用于LC_ALL=C locale abmon强制使用英文月份名称缩写。

相关内容