Попробуйте использовать обратные ссылки:
sed 's/.*\(searchstring\).*/___\1___/'
Символы .*
вокруг строки поиска будут соответствовать всему, кроме строки, а скобки сообщают sed
, что нужно запомнить, что именно соответствует. Вы можете ссылаться на первую совпавшую строку с помощью \1
.
Вот пример (замена всего, кроме 'bar baz'):
$ echo "foo bar baz qux" | sed 's/.*\(bar baz\).*/___\1___/'
___bar baz___
Вы можете заменить 'bar baz' любым шаблоном, который вам больше нравится; Я просто использовал простую строку для простоты.