2016-10-25 28 views
1

我需要添加文本,無論何時我在此處看到具有部分匹配的「結構」定義。每個結構可以有其他結構,因爲它只是爲了向外部/主結構行添加'typedef'。在行尾將文本添加到bash中的匹配模式中

sed '/;[[:blank:]]*$/!s/^[[:blank:]]*struct/typedef &/' file 

typedef struct struct-A { 
    ... 
    struct struct-B; 
}; 

sed命令檢查的;存在,只有當它不存在它增加了typedef

struct struct-A { 
... 
struct struct-B; 
}; 

typedef struct struct-A { 
... 
struct struct-B; 
}; 
+0

'struct'成員是否像'struct-B'沒有縮進? – eddiem

+0

字段縮進是可選的。 – marc

+0

對於外部結構定義,「{」總是與'struct'在同一行上? – eddiem

回答

0

您可以使用此sed之前struct關鍵字。

+1

是@anubhava,謝謝! – marc

0

能否請您查看下面sed -

sed '/;/! s/struct\ struct-/typedef\ struct\ struct-/g' file

typedef struct struct-A { 
... 
struct struct-B; 
}; 
typedef struct struct-C { 
... 
struct struct-D; 
}; 

這sed的將取代structtypedef struct,當它不會找到在該行;