使用awk和日期获取当前天数
当日数小于10时,使用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之间的空间不相
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在GNUdate
无前导空格的情况下被调用的时间: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在GNUdate
中被调用的时间,不带前导空格:date'+-1d'