Может кто-нибудь объяснить мне, почему моя команда sed не работает? Я уверен, что делаю что-то глупое. Вот небольшой текстовый файл, который показывает мой вопрос:sed: группа захвата не распространяется
#!/usr/bin/env python
class A:
def candy(self):
print "cane"
Положи в файл и назовите его test.py
Моя цель состоит в том, чтобы добавить @profile
до четкости линии с тем же отступом, что и объявление функции. Я стараюсь с этим:
$ sed -i '/\( *\)def /i \
\[email protected]' test.py
Обратите внимание, что группа захвата должна быть множество пространств перед опр и я ссылающийся на группу \ 1.
Вот мой результат:
#!/usr/bin/env python
class A:
[email protected]
def candy(self):
print "cane"
Почему что 1
помещаются там буквально вместо того, чтобы заменить мой захвата группы (четыре пространства)?
Спасибо!
Ближе, но \ 1 должно быть перед \ 2 – firebush
Разве это не ваш желаемый результат? ! #/USR/бен/окр питон Класс A: @profile четкости конфеты (само): печать "трость" – sotcha
Таким образом, это работает: СЕПГ -i -e «s /^\(.* \) \ (def. * \)/\ 1 @ profile \ n \ 1 \ 2/'test.py – firebush