在bash中将文本添加到匹配的模式

时间:2016-10-25 17:47:45

标签: bash awk sed

每当我看到" struct"时,我都需要添加文字。这里有部分匹配的定义。每个结构都可以有其他结构,我只需要添加' typedef'到外/主结构线。

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

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

2 个答案:

答案 0 :(得分:0)

您可以使用此sed

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

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

sed命令检查行尾的;是否存在,只有当它不存在时才会在typedef关键字之前添加struct

答案 1 :(得分: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;
};

如果struct在行中找不到typedef struct,则此sed会将;替换为{{1}}。