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