Sed: использовать найденную строку в качестве переменной - PullRequest
0 голосов
/ 19 сентября 2011

Я ищу способ заменить все экземпляры формы:

model->variable

на

models[variable][index]

, где переменная может быть практически любой комбинацией букв и цифр,вероятно, определен как [0-9a-Z] {4,12}.В тексте сотни таких переменных.Мне нужно знать точную форму найденной строки «переменная», чтобы использовать ее в качестве замены.Есть ли способ «запомнить» строку и использовать ее позже?Или любой другой метод / программное обеспечение, которое могло бы помочь в таком случае?

Заранее спасибо.

Если бы вы могли, кстати, преобразовать "переменную" в верхний регистр, это было бы здорово.

1 Ответ

3 голосов
/ 19 сентября 2011

Вы можете использовать вещи в шаблоне для замены, если заключите их в \(...\). Затем вы используете \1, чтобы вставить объект, захваченный первой такой скобкой.

Наивное решение вашей проблемы будет следующим:

sed 's/model->\(.*\)/models[\1][index]/' file.txt
...