我想使用 sed 命令删除文件中最后一次出现的“(* cds_ams_schematic *)”。
`view schematic
`timescale 1ns / 1ns
(* cds_ams_schematic *)
module ...
endmodule
// LAST TIME SAVED: Sep 9 12:14:07 2022
// NETLIST TIME: Dec 13 09:13:34 2022
`view schematic
`timescale 1ns / 1ns
(* cds_ams_schematic *)
module ...
inout N, P, sub;
endmodule
// LAST TIME SAVED: Oct 10 14:16:33 2022
// NETLIST TIME: Dec 13 09:13:34 2022
`view schematic
`timescale 1ns / 1ns
(* cds_ams_schematic *)
module ...
inout PAD;
endmodule
`view schematic_incisiv
`timescale 1ns / 1ns
(* cds_ams_schematic *)
`noworklib
`noview
我尝试了命令
sed -rn 's/[(][*]\scds_ams_schematic\s[*][)]//' sample_txt_file.txt
但是它不起作用。有什么想法吗?
答案1
您可以尝试此命令(参考)
tac input.txt | awk '!found && /(\* cds_ams_schematic \*)/{found=1;next}1' | tac > output.txt
答案2
GNUsed
可以-z
选择使用 NULL 字符而不是 LF 作为分隔符,因此对于文本文件(没有 NULL),整个文件将被处理为一行,并且您可以使用贪婪来.*
查找文件中的最后一次出现:
sed -z 's/\(.*\)(\* cds_ams_schematic \*)/\1/' yourfile.txt
对于大型文件来说这不是一个好主意,但对于像您的示例这样的文件来说则没有问题。