Я читаю со строки около 500 символов. Как я могу заставить sed вместо замены этой строки чем-то заменить остальную часть строки чем-то? Короче говоря, я хочу удалить весь текст вокруг указанной строки. Удаление столбцов с помощью awk не сработает, потому что до и после совпадающей строки имеется неопределенное количество символов. Любые идеи?
Как отменить вывод sed?
Ответы (1)
Попробуйте использовать обратные ссылки:
sed 's/.*\(searchstring\).*/___\1___/'
.*
вокруг строки поиска будет соответствовать всему, кроме строки, а круглые скобки сообщают sed
, что нужно запомнить, что соответствует. Вы можете сослаться на первую совпавшую строку с помощью \1
.
Вот пример (замена всего, кроме «bar baz»):
$ echo "foo bar baz qux" | sed 's/.*\(bar baz\).*/___\1___/'
___bar baz___
Вы можете заменить «bar baz» любым узором, который вам нравится в приведенном выше; Я просто использовал базовую строку для простоты.
person
Todd Gamblin
schedule
11.04.2009