从日期输出中删除前导零

从日期输出中删除前导零

我为 date 命令创建了一个别名,以按以下格式显示日期:

2013.06.14.12.10.02

使用这个命令:

alias date = date +"%Y.%m.%d.%H.%M.%S"

一切都很好,除了我想从输出中删除前导零。

没有办法通过改变格式来实现这一点。我认为这只能通过将输出管道传输到其他命令(如sed和 )来完成awk

我运行的操作系统是 Ubuntu 12.04.2 LTS。

答案1

根据 GNUdate手册页:

   By default, date  pads  numeric  fields  with  zeroes.   The  following
   optional flags may follow '%':

   -      (hyphen) do not pad the field

因此你可以做

alias date="date '+%Y.%-m.%-d.%-H.%-M.%-S'"

并收到

2013.6.14.3.19.31

答案2

感觉很愚蠢,但由于这个问题被标记为/sed,所以这是一种使用 sed 执行此操作的方法,正如您所提到的:)

alias date='date +"%Y.%m.%d.%H.%M.%S" | sed "s/^0*//g; s/\.0*/./g"'

注意下面的评论。他们对于删除*, 以及删除g第一个 sed 表达式中的选项有非常有效的观点。我不想在没有测试的情况下修改上面写的内容,而且我现在没有时间。斯科特下面的评论将常识融入到这个答案中。

答案3

XFCE 设置0时间前面为 no

%l:%M %p

答案4

使用printf可以给你一些灵活性。

例如:

/usr/bin/date "+%b %-2d %-H" | xargs printf "%s %2d %02d"

相关内容