在AWK UNIX命令中从当前日期开始减去30天



我想修改此命令以自动减去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

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

我想这样做,而不必将日期转换为文件中的时期时间。

@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

按预期在我的系统上工作。

相关内容

最新更新