Chr*_*ris 37 unix shell datetime ksh hp-ux
我有一个shell脚本,它执行以下操作以将当前日期存储在变量'dt'中:
date "+%a %d/%m/%Y" | read dt
echo ${dt}
Run Code Online (Sandbox Code Playgroud)
我如何将昨天的日期变成变量?
基本上我想要实现的是使用grep从日志文件中提取所有昨天的行,因为日志中的每一行都包含"Mon 01/02/2010"格式的日期.
非常感谢
pol*_*mon 66
dt=$(date --date yesterday "+%a %d/%m/%Y")
echo $dt
Run Code Online (Sandbox Code Playgroud)
z1x*_*1x2 48
在Linux上,您可以使用
date -d "-1 days" +"%a %d/%m/%Y"
Run Code Online (Sandbox Code Playgroud)
pax*_*blo 12
如果您有可用的Perl(并且您date
没有很好的功能yesterday
),您可以使用:
pax> date
Thu Aug 18 19:29:49 XYZ 2010
pax> dt=$(perl -e 'use POSIX;print strftime "%d/%m/%Y%",localtime time-86400;')
pax> echo $dt
17/08/2010
Run Code Online (Sandbox Code Playgroud)
ram*_*har 12
您可以使用GNU date命令,如下所示
在过去得到日期
要获得昨天和过去的早些时候使用字符串前一天:
date --date ='昨天'
date --date ='1天前'
date --date = '10天前'
date --date = '10周前'
date --date ='10月前'
date --date ='10年前'
在未来获得日期
明天和后天(明天+ N)使用日期字来获取日期,如下:
date --date ='明天'
date --date ='1天'
date --date = '10 day'
date --date = '10周'
date --date = '10 month'
date --date = '10 year'
如果您使用的是Mac或BSD或没有--date选项的其他内容,您可以使用:
date -r `expr \`date +%s\` - 86400` '+%a %d/%m/%Y'
Run Code Online (Sandbox Code Playgroud)
更新:或者......
date -r $((`date +%s` - 86400)) '+%a %d/%m/%Y'
Run Code Online (Sandbox Code Playgroud)
我在Linux中有shell脚本,以下代码为我工作:
#!/bin/bash
yesterday=`TZ=EST+24 date +%Y%m%d` # Yesterday is a variable
mkdir $yesterday # creates a directory with YYYYMMDD format
Run Code Online (Sandbox Code Playgroud)
尝试以下方法:
dt=`case "$OSTYPE" in darwin*) date -v-1d "+%s"; ;; *) date -d "1 days ago" "+%s"; esac`
echo $dt
Run Code Online (Sandbox Code Playgroud)
它可以在 Linux 和 OSX 上运行。