Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 仅在第一次出现后在模式匹配后追加一行_Awk_Sed - Fatal编程技术网

Awk 仅在第一次出现后在模式匹配后追加一行

Awk 仅在第一次出现后在模式匹配后追加一行,awk,sed,Awk,Sed,我有多个文件,如下所示 module ( input a; output b; ); xx inst_xx ( .in (xxin), .ou (xxou) ); assign a = b; endmodule 我只想在第一次出现)之后追加一行模式 `include "defines.vh" 所以最后看起来应该是 module ( input a; output b; ); `include "defines.vh" xx inst_xx ( .in

我有多个文件,如下所示

module ( 
input a;
output b;
);

xx inst_xx (
.in     (xxin),
.ou     (xxou)
);

assign a = b;

endmodule 
我只想在第一次出现
)之后追加一行模式

`include "defines.vh" 
所以最后看起来应该是

module ( 
input a;
output b;
);
`include "defines.vh"

xx inst_xx (
    .in     (xxin),
    .ou     (xxou)
);

assign a = b;

endmodule 
任何使用
sed
awk
的方法都是有用的

这可能适合您(GNU-sed):

$ awk '{ print } !flag && /);/ { print "`include \"defines.vh\""; flag = 1 }' file
module (
input a;
output b;
);
`include "defines.vh"

xx inst_xx (
.in     (xxin),
.ou     (xxou)
);

assign a = b;

endmodule
或:


这与第一个
)匹配
并附加所需字符串,然后在
n
命令上读取并打印文件循环的其余部分

xx inst\u xx
开头的块怎么样?是否也应该在输出中?否,需要忽略提到的块
xx inst\u xx
。刚才纠正了期望的输出。你能解释一下它的作用吗?如果你解释一下每个字母,我会很高兴的。非常感谢。
sed $'/);/{a`include "defines.vh"\n;:a;n;ba}' file
sed -e '/);/{a`include "defines.vh"' -e ':a;n;ba}' file