I have a very big verilog file(~350 MiB). In that, I want to comment particular module names.So i took a sample file and tried my regular expression on it.
Sample file(abc) :-
module util_minor_rev_id(minor_rev); output [3:0] minor_rev; wire [3:0] minor_rev; wire n_15, n_16, n_17, n_18, n_19, n_20, n_21, n_22; HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id0(.A (1'b1), .Z (minor_rev[0])); HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id1(.A (1'b1), .Z (minor_rev[1])); xyz HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id2(.A (1'b1), .Z (minor_rev[2])); HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id3(.A (1'b1), .Z (minor_rev[3])); endmodule I want to comment the lines containing HS55_LH_OPTALL_GND_Z till ; so the output should be like
module util_minor_rev_id(minor_rev); output [3:0] minor_rev; wire [3:0] minor_rev; wire n_15, n_16, n_17, n_18, n_19, n_20, n_21, n_22; /*HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id0(.A (1'b1), .Z (minor_rev[0]));*/ /*HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id1(.A (1'b1), .Z (minor_rev[1]));*/ xyz /*HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id2(.A (1'b1), .Z (minor_rev[2]));*/ /*HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id3(.A (1'b1), .Z (minor_rev[3]));*/ endmodule I am first trying to verify my pattern using regular expression and grep. I had problem using multi line pattern search. So i googled and found that pcregrep is my buddy.
pcregrep -Mno '^\s\*HS55_LH_OPTALL_GND_Z.*(\n|.)+;$' abc But the output is:-
5: HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id0(.A (1'b1), .Z (minor_rev[0])); HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id1(.A (1'b1), .Z (minor_rev[1])); xyz HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id2(.A (1'b1), .Z (minor_rev[2])); HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id3(.A (1'b1), .Z (minor_rev[3])); 7: HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id1(.A (1'b1), .Z (minor_rev[1])); xyz HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id2(.A (1'b1), .Z (minor_rev[2])); HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id3(.A (1'b1), .Z (minor_rev[3])); 10:HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id2(.A (1'b1), .Z (minor_rev[2])); HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id3(.A (1'b1), .Z (minor_rev[3])); 12: HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id3(.A (1'b1), .Z (minor_rev[3])); I think its first matching from 5th line to last ;. Then, 7th line to last ;(semicolon). Then, 10th line to last ;. And then 12th line to last ;
How do I make it work as I want?