在awk Unix命令中从当前日期减去30天

时间:2018-12-20 08:35:09

标签: shell date unix hp-ux

我想修改此命令以自动从当前日期减去30天

$ awk -v t=$(date +%Y-%m-%d) -F "'" '$1 < t' myname.dat 

当我尝试

$ awk -v t=$(date "--date=$(date) -30days" +%Y-%m-%d) -F "'" '$1 < t' myname.dat

我收到以下错误;日期:非法选项

我想要执行此操作而不必将日期转换为文件中的纪元时间。

1 个答案:

答案 0 :(得分:0)

@edit:以下内容仅适用于GNU日期:

您总是可以减去秒。

date --date=@$(($(date +%s) - 30 * 24 * 3600)) +%Y-%m-%d

如果您想从“现在”中减去30天,只需:

date --date="-30days" +%Y-%m-%d

date日期格式如此广泛,最好使用-I选项指定确切的日期,以人工日期为准:

   -I[FMT], --iso-8601[=FMT]  
          output  date/time  in ISO 8601 format.  FMT='date' for date only
          (the default), 'hours', 'minutes', 'seconds', or 'ns'  for  date
          and    time    to    the    indicated    precision.     Example:
          2006-08-14T02:34:56-06:00

以下内容:

date --date="$(date -I) -30days" +%Y-%m-%d

可以在我的系统上正常工作。