Используя двойные кавычки вокруг строки выражения sed
, вы можете использовать продолжение обычной строки -, чтобы разбить ее на несколько строк:
expression="/([12][[:digit:]]{3}-(0[1-9]|1[0-2])-(0[1-9]|[12][[:digit:]]|3[01]) \
[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2},[[:digit:]]{3} INFO)/d"
После \
в конце первой строки не должно быть ничего, кроме новой строки, а вторая строка не должна начинаться с каких-либо дополнительных символов. Я переместил пробел в строке до первой строки, чтобы он выглядел преднамеренно, а не как случайный отступ.
Кроме того, вы можете использовать конкатенацию двух одинарных -строк в кавычках:
expression='/([12][[:digit:]]{3}-(0[1-9]|1[0-2])-(0[1-9]|[12][[:digit:]]|3[01]) '\
'[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2},[[:digit:]]{3} INFO)/d'
Это присвоит переменной expression
одну строковую строку.
Затем вы должны использовать это как
sed -E -e "$expression"
Здесь я использую -E
вместо -r
, так как -E
чаще поддерживается (для включения расширенных регулярных выражений вsed
)и использования -e
, чтобы сообщить sed
, что следующий аргумент — это выражение sed
, применяемое к входным данным. Само выражение sed
должно быть заключено в двойные кавычки, так как мы не хотим, чтобы оболочка выполняла разбиение слов и подстановку имени файла для его значения.
Каталог /opt
является частью пакета «файловая система», и когда он получил обновление, он исправил принадлежащий ему каталог.
Пакет может указывать, что некоторые файлы являются файлами конфигурации, а не заменять их, но /opt — это не файл конфигурации, а каталог, поэтому он будет заменен.
Возможно, вам будет лучше, если вы привяжете -смонтированный /opt
к местоположению, а не замените его символической ссылкой. Таким образом, это все еще каталог, это просто точка монтирования.
Например, если раньше у вас была символическая ссылка/opt
-> /foo/bar
, вы можете заменить символическую ссылку обычным каталогом и добавить запись fstab, которая выглядит как:
/foo/bar /opt none bind 0 0
Или аналогичный блок монтирования systemd.