Ответ 1
Разделители //
, которые вы используете, не предназначены для команды d
, они предназначены для адресации. Я думаю, вы сравниваете их с косой чертой в команде s///
... Однако, хотя оба относятся к регулярным выражениям, они представляют собой разные контексты.
Адрес (который отображается до) фильтрует, в какие строки применяется эта команда... Параметры (которые появляются после) используются для управления применяемая замена.
Если вы хотите использовать разные разделители для регулярного выражения в адресе, вам нужно запустить адрес с обратной косой чертой:
$ sed '\:timebomb:d' test.txt
01 30 * * * /opt/reincarnate.sh >> reincarnation.log
(Чтобы понять разницу между адресом и параметрами, рассмотрите вывод команды:
$ sed '/timebomb/s/log/txt/' test.txt
Адрес выбирает только строку (строки), содержащую регулярное выражение timebomb
, но опции сообщают команде s
заменить регулярное выражение log
на txt
.)