用SED替换字符串

时间:2012-02-08 06:59:21

标签: python bash sed

在一个文件(.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 个答案:

答案 0 :(得分:5)

 sed -i "/^class myClass2:/,/^class/s/f1 = '512kB'/f1 = '1MB'/" path/to/file.py

这假设你的类声明永远不会缩进。

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