Как заставить sed работать только на определенных участках линии?И, наоборот, как заставить sed не работать на определенных частях строки?
Примеры:
"A a A a ( A a ) A ( a A ) a"
Как, например, заменить все A
s с T
s только между (
и )
для получения:
"A a A a ( T a ) A ( a T ) a"
И с учетом следующего примера ввода:
"F f F f ( F f ) F ( f F ) f"
Какнапример, заменить ли F
s на X
s, но not между (
и )
, чтобы получить:
"X fX f (F f) X (f F) f "
Я искал в Google, но не нашел ничего пригодного для использования.Я думаю, что это общий вопрос о седе.Надеюсь, что проблема сводится к общим шаблонам sed,
- , имеющим FROM и TO, а затем работают только между ними (во всех случаях в данной строке)
- , имеющим FROM и TOработать где-то еще, чем между ними ...
- особый случай, когда FROM и TO одинаковы (между "и" или "FOO" и "FOO" и т. д.) для 1. и 2.
Он должен работать с любой операцией, не только с подстановкой, но и с печатью и т. Д., Например, печать всего между строками "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 "
Итак, общие примеры того, как это сделать, будут высоко оценены.Также кажется, что этот вопрос довольно распространенный, но в Google пока нет хороших инструкций.Я также думаю, что это будет довольно сложно ответить.Пожалуйста, также не давайте никаких подсказок о том, как это сделать, используя Perl, AWK или что-то еще, кроме sed.Этот вопрос действительно только для седов.