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

标签 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     (xxin),
    .ou     (xxou)
);

assign a = b;

endmodule 

任何使用 sedawk 的东西都会很有用。

最佳答案

$ 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

关于awk - 仅在第一次出现后在模式匹配后追加一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32139141/

相关文章:

linux - 如何在 Bash 脚本中将字符串作为参数传递给 AWK

bash - 如何删除最后一次出现模式后的所有行?

html - 使用 sed 从 html 中提取 pdf

sed - 删除与模式匹配的第一行

bash - tail -f、awk 并输出到文件 >

linux - 使用 awk 命令比较 2 个文件的算术

linux - sh shell 将子 shell 重定向到文件,找不到正确的语法

linux - 使用 shell 脚本使用 sed 替换字符串的特定字符

regex - 如果一行以 = 结尾,则将下一行附加到它 (sed)

linux - 是否存在默认未安装 Perl 的 Unix 平台?