如何在Unix中找到当前日期减去七天?
我想找出今天七天前的日期如何在Unix中找到当前日期减去七天?,unix,sh,ksh,Unix,Sh,Ksh,我想找出今天七天前的日期 CURRENT_DT=`date +"%F %T"` diff=$CURRENT_DT-7 echo $diff 我正在尝试上面的方法,以找到比当前日期少7天的时间。有人能帮我一下吗?我有一段时间没有使用unix了,但我在我的一个脚本中发现了这一点 echo `date +%s`-604800 | bc GNUdate将为您提供数学: date --date "7 days ago" 另一个版本将要求您将当前日期转换为从UNIX纪元开始的秒数,手动减去7
CURRENT_DT=`date +"%F %T"`
diff=$CURRENT_DT-7
echo $diff
我正在尝试上面的方法,以找到比当前日期少7天的时间。有人能帮我一下吗?我有一段时间没有使用unix了,但我在我的一个脚本中发现了这一点
echo `date +%s`-604800 | bc
GNU
date
将为您提供数学:
date --date "7 days ago"
另一个版本将要求您将当前日期转换为从UNIX纪元开始的秒数,手动减去7天的秒数,然后将其转换回所需的形式。有关如何在Unix时间戳之间进行转换的详细信息,请参阅您的date
版本的文档。下面是一个再次使用GNUdate
的示例:
x=$(date +%s)
x=$((x - 7 * 24 * 60 * 60))
date --date @$x
下面是一个简单的Perl脚本(与其他示例不同),它可以与Unix一起使用:
(当然,使用Solaris 10和token Linux系统进行了测试,但需要注意的是,Perl不一定是配置的一部分,只是很有可能)。
Ksh
的printf
可以进行时间计算:
$ printf '%(%Y-%m-%d)T\n'
2015-04-07
$ printf '%(%Y-%m-%d)T\n' '7 days ago'
2015-03-31
$
为OSX上的Shell添加此选项:
date -v-7d
> Tue Apr 3 15:16:31 EDT 2018
date
> Tue Apr 10 15:16:33 EDT 2018
需要格式化吗
date -v-7d +%Y-%m-%d
> 2018-04-03
上午604800000的成绩是什么样的823540175@jcrshankar哦,哎呀,多了几个零,应该是604800Tag,上面写着“Unix”,但这个例子不适用于Solaris 10。通常,Unix不允许以这种方式使用
date
命令。当然,Perl可以做到这一点。@ThomasDickey啊,好的。我对Unixpday=7 CURRENT=date+%F%t”--date“$pday days ago”
echo$CURRENT这很好。shell处理将$pday
替换为7的问题,因此date
无论采用哪种方式都会获得与--date
相同的参数。同样,GNU date不太可能安装在Unix系统上(可能只有Linux和Cygwin之类的结构)。很有趣(我发现这是一个相对较新的功能——在*上的手册中,但在旧版本中没有看到。对Debian系统的快速检查显示它是ksh93的一部分(OP没有提供详细信息)。请添加一些详细信息,并详细说明解决方案的工作原理。
date -v-7d +%Y-%m-%d
> 2018-04-03
DATE=$(date --date "7 days ago" | awk '{print$1,$2,$3}')
echo "$DATE"
if [ -z "$(grep -i "$DATE" test.log)" ]; then
exit 1
fi
sed -i "1,/$DATE/d" test.log