Это .*
вам нужно, а не *.
(.
означает любой символ, *
означает повторение в любое время, включая 0 раз).
Также sed
является редактором потока строки, поэтомупо умолчанию совпадение будет ограничено в пределах текущей строки.
Если вы хотите сопоставить несколько строк, самый простой способ - использовать -z
switch (GNU sed):
echo "list toblock '123
456'"|sed -z "s/list toblock '.*'/list maclist 'sampletoreplace'/g"
list maclist 'sampletoreplace'
Но поскольку sed
обычно работает с жадным режимом RegEx,и не поддерживает .*?
(остановка жадного режима), поэтому вы можете изменить его на:
sed -z "s/list toblock '[^']*'/list maclist 'sampletoreplace'/g"
, в котором [^']
означает any character that is not a '
.