使用awk和日期获取当前天数

使用awk和日期获取当前天数,awk,cut,Awk,Cut,当日数小于10时,date命令的输出有两个空格。比如说 Mon May 31 10:24:01 +0430 2020 Mon Jun 1 10:24:01 +0430 2020 对于第一个参数,date | cut-d”“-f3返回31。但是,对于第二个,它返回空间。有没有办法解决这个问题?您可以简单地尝试awk来获取第三个字段,这肯定比cut命令要好 date | awk '{print $3}' 现在为什么cut命令不起作用,因为May和31之间的空间相等,但是Jun和1之间的空间不相

当日数小于10时,
date
命令的输出有两个空格。比如说

Mon May 31 10:24:01 +0430 2020
Mon Jun  1 10:24:01 +0430 2020

对于第一个参数,
date | cut-d”“-f3
返回31。但是,对于第二个,它返回空间。有没有办法解决这个问题?

您可以简单地尝试
awk
来获取第三个字段,这肯定比
cut
命令要好

date | awk '{print $3}'
现在为什么
cut
命令不起作用,因为
May
31
之间的空间相等,但是
Jun
1
之间的空间不相等,所以您需要在cut命令中使用
f4
(对于当前方法的单位数日期数字)。在这种情况下,最好使用
awk


或者,在理想情况下,如果您只想获取日期,则根据@anubhava sir的评论,使用
date'+%d'
获取始终为2位的日期。

您可以简单地尝试
awk
获取第三个字段,这肯定比
cut
命令更好

date | awk '{print $3}'
现在为什么
cut
命令不起作用,因为
May
31
之间的空间相等,但是
Jun
1
之间的空间不相等,所以您需要在cut命令中使用
f4
(对于当前方法的单位数日期数字)。在这种情况下,最好使用
awk


或者,在理想情况下,如果您只想获取日期,则根据@anubhava sir的评论,使用
date'+%d'
获取始终为2位的日期。

为什么使用
cut
awk
获取数据部分。只需使用
date'+%d'
即可始终获得2位数字。使用Bash4.2或更新版本输出当前日期:
printf-v day'%(-1e)T'-1;echo“$day”
@Cyrus-现在这很酷,但是在
man bash
中这是从哪里来的呢?我能找到的唯一比较接近的东西是在提示下,但事实并非如此。@DavidC.Rankin:有关
%(fmt)t
的信息,请参阅
帮助printf
。对于
%e
请参见
man 3 strftime
对于trailing
-1
请参见
man bash
:-1表示当前时间,-2表示shell在GNU
date
无前导空格的情况下被调用的时间:
date'+-1d'
为什么要使用
cut
awk
来获取数据部分。只需使用
date'+%d'
即可始终获得2位数字。使用Bash4.2或更新版本输出当前日期:
printf-v day'%(-1e)T'-1;echo“$day”
@Cyrus-现在这很酷,但是在
man bash
中这是从哪里来的呢?我能找到的唯一比较接近的东西是在提示下,但事实并非如此。@DavidC.Rankin:有关
%(fmt)t
的信息,请参阅
帮助printf
。对于
%e
请参见
man 3 strftime
,对于尾部
-1
请参见
man bash
:-1表示当前时间,-2表示shell在GNU
date
中被调用的时间,不带前导空格:
date'+-1d'