замена строки на SED - PullRequest
       3

замена строки на SED

2 голосов
/ 08 февраля 2012

В файле (файл .py) у меня есть несколько классов с другим именем, но у некоторых есть общие переменные:

class myClass1:
  f1 = '512kB'
  f2 = 2
  f3 = 'something1'

class myClass2:
  f1 = '512kB'
  f2 = 6
  f3 = 'something2'

Я хочу написать скрипт bash и использовать SED для замены некоторых строк. Проблема в том, что я хочу сначала найти myClass2, а затем заменить f1 = '512kB' на f1 = '1MB'

Если я использую

sed -i 's/f1 = '512kB'/f1 = '1MB'/g' /path/to/file

она заменит эту строку для обоих классов.

1 Ответ

5 голосов
/ 08 февраля 2012
 sed -i "/^class myClass2:/,/^class/s/f1 = '512kB'/f1 = '1MB'/" path/to/file.py

Предполагается, что объявления вашего класса никогда не имеют отступов.

Однако, учитывая, что это Python, не имеет ли смысла написать простую подпрограмму для установки значения переменной, а не жестко ее кодировать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...