САС: вставить слово / строку между двумя узорами в ЖЕ ЛИНИИ - PullRequest
0 голосов
/ 16 октября 2019

Я искал во всем стеке потока (возможно, я просто отстой в поиске), но я не могу найти ответ на мою проблему. Я пытаюсь вставить слово или строку между двумя шаблонами в одной строке, используя sed.

Я знаю, как вставить слово ПОСЛЕ найденного шаблона, используя

sed -e "s/pattern/& new_word/g"

самперсанд (&).

Но эта команда вставляет 'new_word' в каждое вхождение искомого шаблона, поэтому я пытаюсь указать его так, чтобы он вставлял 'new_word' только между двумя шаблонами.

Например,

Some words  = [want to insert words here];

Как вставить его между "Некоторые слова (здесь несколько пробелов) =" и ";"?

Каков синтаксис для этого вида команды? Кроме того, какие ресурсы вы, ребята, используете для изучения sed? Многие из обучающих программ sed, которые я искал, очень просты и не содержат подробностей использования различных опций и флагов.

Спасибо.

1 Ответ

1 голос
/ 16 октября 2019

Используйте группы захвата.

sed -e 's/(pattern1)(pattern2)/\1new_word\2/'

\1 заменяется тем, что соответствует первому шаблону, \2 получает то, что соответствует второму шаблону.

...