Как заставить sed работать только с определенными частями строки? И, наоборот, как заставить sed не работать с определенными частями строки?
Примеры:
"A a A a ( A a ) A ( a A ) a"
Как, например, заменить все A
на T
s только между (
и )
, чтобы получить:
"A a A a ( T a ) A ( a T ) a"
И в следующем примере ввода:
"F f F f ( F f ) F ( f F ) f"
Как мне, например , получить:
«X f X f (F f) X (f F) f»
Я искал в Google, но не нашел ничего полезного. Думаю, это общий вопрос о sed. Я надеюсь, что проблема сводится к общим "шаблонам" sed.
Он должен работать с любой операцией, не только с заменой, но и с печатью и т. д., например, печать всего, что находится между строками «FOO» и «BAR» в строке.
"1 2 3 BAR a b c FOO d e f BAR g a h FOO i j k BAR l m n FOO o p q"
Результатом будет
" d e f i j k "
Итак, общие примеры того, как это сделать, будут очень признательны. Также кажется, что это довольно частый вопрос, но в гугле пока не найдено хороших практических рекомендаций. Я тоже думаю это было бы довольно сложно ответить. Пожалуйста, также не давайте никаких подсказок, как это сделать используя Perl, AWK или что-то еще, кроме sed. Этот вопрос действительно предназначен только для sed.