Как поменять вывод sed? - PullRequest
9 голосов
/ 11 апреля 2009

Я читаю строку примерно из 500 символов. Как я могу получить sed, вместо того чтобы заменить эту строку чем-то, заменить остальную часть строки чем-то? Короче говоря, я хочу удалить весь текст вокруг указанной строки. Удаление столбцов с помощью awk не будет работать, потому что до и после сопоставленной строки существует неопределенное количество символов. Есть идеи?

1 Ответ

11 голосов
/ 11 апреля 2009

Попробуйте использовать обратные ссылки:

sed 's/.*\(searchstring\).*/___\1___/'

Символы .* вокруг строки поиска будут соответствовать всему, кроме строки, а скобки сообщают sed, что нужно запомнить, что именно соответствует. Вы можете ссылаться на первую совпавшую строку с помощью \1.

Вот пример (замена всего, кроме 'bar baz'):

$ echo "foo bar baz qux" | sed 's/.*\(bar baz\).*/___\1___/'
___bar baz___

Вы можете заменить 'bar baz' любым шаблоном, который вам больше нравится; Я просто использовал простую строку для простоты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...