Для этого может быть полезен Perl:
perl -MTime::Piece -slE 'say +(Time::Piece->strptime($date, "%Y%b%d") - 2 * 86_400)->ymd' -- -date="$rel_date"
Вы указываете формат входящей переменной даты, чтобы преобразовать ее в объект времени, выполнить арифметику даты, а затем вывести в желаемом формате ГГГГГ -мм -дд.
Задокументировано здесь:https://perldoc.perl.org/Time/Piece.html
Я не думаю, что поведение cut
должно было так недавно измениться. Я также не могу воспроизвести это с Debian 8.11 и cut
из GNU coreutils 8.23.
Однако, если вы укажете cut
аргумент -f 2-
с тире в конце, вы получите все поля, начинающиеся с поля 2. Что, я полагаю, в значительной степени соответствует тому, что вы описываете:
$ cut -d ' ' -f2- <<< "aaa bbb"
bbb
Обратите внимание, что в выводе есть два начальных пробела, они являются разделителями полей между полями 2 (пусто ), 3 (пусто )и 4(bbb
). У вас был один пробел в вопросе, но я не знаю, было ли это сделано намеренно.