Спасибо, Steeldriver, я исправил это, используя приведенный ниже синтаксис
yesterday_day="$(date -d '-1 day' '+%-d')"
yesterday_month="$(date -d '-1 day' '+%b')"
yesterday="${yesterday_month} ${yesterday_day}"
и теперь вы можете добавлять туда любые пробелы
Подход GNU Sed,
sed -Ei '/home|tmp/{s/^#//;t;s/^/#/}' file
/home|tmp/
Если строка соответствует home
или tmp
, {s/^#//;t;s/^/#/}
Удалите #
в начале строки. Если его там нет, замените начало строки на #
. Альтернатива Awk
awk '$2 ~ /home|tmp/{ if (!( sub(/^#/, "") )) $1="#"$1} 1' file
$2 ~ /(home|tmp)/
Если второе поле содержит home
или tmp
, if (!( sub(/^#/, "") ))
Попробуйте сопоставить #
в начале строки и удалите его. Если операция не была успешной (из-за отсутствия #
в начале строки ), $1="#"$1
Добавить #
к началу строки. 1
Напечатайте полученную строку. Если у вас есть Gawk, вы можете добавить флаг -i inplace
для редактирования файла в место -, но я считаю, что лучше перенаправить вывод в файл, а затем перезаписать исходный файл, проверив, что все прошло правильно..
С доступным модулем lineinfile особенно если вам нужно сделать это для нескольких хостов:https://docs.ansible.com/ansible/latest/collections/ansible/builtin/lineinfile_module.html