2016-11-18 114 views
0

我有一個包含多個宏及其相應細節的文件。感興趣的代碼是在這裏:模式匹配後編輯行,但只在模式匹配後編輯

MACRO QWERTY 
    CLASS FOO ; 
    ORIGIN 0.0 0.0 ; 
    FOREIGN QWERTY 0.0 0.0 ; 
    SIZE 2.123 BY 0.369 ; 
    SYMMETRY Y ; 

我感興趣的編輯的只是宏「QWERTY」,並從改變它的對稱性「的對稱,ÿ;」到「SYMMETRY X Y;」。 (G)awk或sed將工作得很好。我嘗試了以下方法,但它返回了空虛:

gawk '1;/MACRO QWERTY/{c=5}c&&!--c{gsub(/Y/,"X Y")}' 

謝謝!

回答

0

隨着GNU sed的:

sed '/^MACRO QWERTY$/,/SYMMETRY/s/SYMMETRY Y/SYMMETRY X Y/' file 

輸出:

 
MACRO QWERTY 
    CLASS FOO ; 
    ORIGIN 0.0 0.0 ; 
    FOREIGN QWERTY 0.0 0.0 ; 
    SIZE 2.123 BY 0.369 ; 
    SYMMETRY X Y ;