我想修改此命令以自动减去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
按预期在我的系统上工作。