Используя двойные кавычки вокруг строки выражения 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
должно быть заключено в двойные кавычки, так как мы не хотим, чтобы оболочка выполняла разбиение слов и подстановку имени файла для его значения.