如何匹配两种模式但使用sed替换一种模式?

时间:2016-12-08 08:14:00

标签: bash awk sed

文件(test.h)中有许多行,例如:

#include <stdio.h" should be converted to #include <stdio.h>

第一个模式是&#39; #include&lt;&#;;第二个模式是&#39; .h&#34;&#39;,我想在一个命令行中使用sed,匹配两种模式同时进行,但只替换第二种模式。

我使用以下命令:

sed -i 's/include </include </g;s/\.h\"/\.h>/g' test.h

但是它将分别替换模式,不能同时匹配。

2 个答案:

答案 0 :(得分:1)

试试这个:

sed '/#include </s/\.h"/.h">/' test.h

当该行包含#include <时,请将.h"替换为.h>

答案 1 :(得分:0)

 sed -E '/^[[:blank:]]*#include[[:blank:]]*<.*\.h\"$/{s/\"$/>/}' test.h