Добавление лет к переменной даты внутри цикла

У вас не может быть и того, и другого.

Только rootможет редактировать файл sudoers, что и делает visudo. Права доступа по умолчанию для файла sudoers440, поэтому visudoиспользуется для его редактирования, и только root может использовать эту команду.

Команда sudoоткажется работать, если права доступа к файлу sudoersне равны 440во избежание разрушения системы.

Не стоит заморачиваться только потому, что вы можете попытаться избежать ввода sudo, потому что это просто сломает вашу систему и все равно не будет работать. Безопасность, которую вы ищете, уже на месте.

0
28.06.2021, 13:39
1 ответ

Я не уверен, что утилита dateвообще требуется в вашем случае, так как вы хотите выполнить довольно простую операцию только для года (вычитание 5 лет будет просто означать уменьшение части yyyyиз dd-mm-yyyyна 5 ).

В этом случае следующая awkпрограмма изменит даты в третьем столбце вашего входного файла:

~$ awk -v offs=-5 '{split($3,df,"-"); printf "%02d-%02d-%04d\n",df[1],df[2],df[3]+offs}' temp9_0.txt 
04-04-2012
25-11-2009
13-06-1997

путем добавления смещения, указанного с помощью переменной offs, к третьему (тире -, отделенному )подполем -3-го столбца, и печатью измененных значений подполя с помощью printf. Это делается с помощью команды splitдля разделения 3-го столбца в -на массивdf(полей даты).

Чтобы применить это к определенной строке, а не ко всем, и предполагая, что нет пустых строк, вы можете указать дополнительную переменную lineи сделать программу выборочной только для этой строки, оценивая FNR, awks автоматически на -строку файла -счетчик:

awk -v line=3 -v offs=-5 'FNR==line {split($3,df,"-"); printf "%02d-%02d-%04d",df[1],df[2],df[3]+offs}' temp9_0.txt

Затем эти выходные данные могут быть перехвачены в переменной оболочки посредством подстановки команд, как в

dob_want2=$(awk -v line=3.....)
0
28.07.2021, 11:22

Теги

Похожие вопросы