用SED替换字符串

mah*_*ood 2 python bash sed

在一个文件(.py文件)中,我有一些不同名称的类,但有些具有公共变量:

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

class myClass2:
  f1 = '512kB'
  f2 = 6
  f3 = 'something2'
Run Code Online (Sandbox Code Playgroud)

我想编写一个bash脚本并使用SED替换一些字符串.问题是我想首先找到myClass2然后替换f1 = '512kB'f1 = '1MB'

如果我使用

sed -i 's/f1 = '512kB'/f1 = '1MB'/g' /path/to/file
Run Code Online (Sandbox Code Playgroud)

它将替换两个类的字符串.

tri*_*eee 5

 sed -i "/^class myClass2:/,/^class/s/f1 = '512kB'/f1 = '1MB'/" path/to/file.py
Run Code Online (Sandbox Code Playgroud)

这假设您的类声明永远不会缩进.

但是,鉴于这是Python,编写一个简单的子例程来设置变量的值,而不是硬编码是不是更有意义呢?