Вычитание 30 дней из текущей даты в Unix-команде awk - PullRequest
0 голосов
/ 20 декабря 2018

Я хочу изменить эту команду, чтобы автоматически вычитать 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

, я получаю следующую ошибку;date: недопустимый параметр

Я хочу сделать это без необходимости конвертировать даты в время эпохи в файле.

1 Ответ

0 голосов
/ 20 декабря 2018

@ 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

работает в моей системе, как и ожидалось.

...