我想找到今天前七天的日期。
CURRENT_DT=`date +"%F %T"`
diff=$CURRENT_DT-7
echo $diff
我正在尝试像上面这样的东西找到比当前日期少7天的东西。有人可以帮帮我吗?
答案 0 :(得分:3)
GNU date
将为您计算数学:
date --date "7 days ago"
其他版本将要求您将当前日期转换为自UNIX纪元以来的秒数,手动减去7天'值秒,并将其转换回所需的形式。有关如何与Unix时间戳进行转换的详细信息,请参阅您的date
版本的文档。以下是再次使用GNU date
的示例:
x=$(date +%s)
x=$((x - 7 * 24 * 60 * 60))
date --date @$x
答案 1 :(得分:1)
这是一个简单的Perl脚本(与其他示例不同)与 Unix 一起使用:
perl -e 'use POSIX qw(ctime); printf "%s", ctime(time - (7 * 24 * 60 * 60));'
(当然,使用Solaris 10和令牌Linux系统进行测试 - 需要注意的是Perl不是必然是一个配置的一部分,但很可能)。
答案 2 :(得分:1)
Ksh
' printf
可以进行时间计算:
$ printf '%(%Y-%m-%d)T\n'
2015-04-07
$ printf '%(%Y-%m-%d)T\n' '7 days ago'
2015-03-31
$
答案 3 :(得分:1)
在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
答案 4 :(得分:0)
我有一段时间没有使用过unix,但是在我的一个脚本中发现了这个
echo `date +%s`-604800 | bc
答案 5 :(得分:0)
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