與SED

2012-02-08 35 views
2

替換字符串中的一個文件(.py文件)我有一些班級,不同的名稱,但一些有共同的變量:與SED

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

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

我想寫一個bash腳本,並使用SED來替換一些字符串。問題是,我想先找到myClass2,然後用

更換f1 = '512kB'如果我使用

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

它將取代串兩個類。

+1

這裏你的實際目標是什麼?這些課程是否有成千上萬的副本?爲什麼這不只是一個單一的編輯? – Cascabel 2012-02-08 07:01:33

+0

我想讓這個過程自動化。否則,我必須打開每個文件並手動編輯 – mahmood 2012-02-08 07:09:24

+0

+1寫得好的問題 – 2012-02-08 07:14:07

回答

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

這假定您的類聲明從不縮進。

但是,鑑於這是Python,編寫一個簡單的子例程來設置變量的值而不是硬編碼它會更有意義嗎?

+0

該命令只是在終端中打印file.py。該文件本身沒有被修改 – mahmood 2012-02-08 07:12:26

+1

對不起,編輯添加缺少的'-i' ...以及有關可能在Python中執行此操作的註釋。 – tripleee 2012-02-08 07:13:37