Вы пробовали нажимать кнопку меню монитора? Используйте его для выбора входа HDMI.
У меня была похожая проблема, я был полностью озадачен, пока не разобрался с ней. Поделиться на случай, если вы это не заметили.
Это, кажется, закомментирует строки, которые вы хотите:
sed -z 's|HS55_LH_OPTALL_GND_Z[^;]*;|/*&*/|g' abc
Например:
$ sed -z 's|HS55_LH_OPTALL_GND_Z[^;]*;|/*&*/|g' 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
Параметр -z
(только GNU) говорит sed читать файл не по строке за раз, а пока он не найдет символ NUL. Поскольку разумные текстовые файлы никогда не имеют символа NUL, это приводит к чтению всего файла сразу.
Вышеупомязанная команда использует одну команду замены, чтобы поместить /*
и */
вокруг интересующих строк.
Чтобы изменить файл на месте:
sed -i.bak -z 's|HS55_LH_OPTALL_GND_Z[^;]*;|/*&*/|g' abc
Для BSD/OSX или другого sed:
sed '/HS55_LH_OPTALL_GND_Z/{:a; /;/{bb}; N; ba; :b; s|H|/*H|; s|;|;*/|;}' abc
Например:
$ sed '/HS55_LH_OPTALL_GND_Z/{:a; /;/{bb}; N; ba; :b; s|H|/*H|; s|;|;*/|;}' 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
Чтобы изменить файл на месте:
sed -i.bak '/HS55_LH_OPTALL_GND_Z/{:a; /;/{bb}; N; ba; :b; s|H|/*H|; s|;|;*/|;}' abc
Ограничение: Поскольку ни одна из этих команд sed не анализирует файл, могут быть ситуации, когда они делают неправильные вещи.
/HS55_LH_OPTALL_GND_Z/{...}
При этом выбираются строки, содержащие HS55_LH_OPTALL_GND_Z
, и для этих строк выполняются команды внутри фигурных скобок. Эти команды описаны ниже.
:a
Это определяет метку a
.
/;/{bb}
Если пространство шаблона в данный момент содержит ;
, затем ветвь на метку b
.
N
Прочитайте в следующей строке из файла и сохраните его в пространстве шаблона.
ba
Ветвь для обозначения a
.
:b
Это определяет метку b
.
с| Н|/*Ч|; с|;|; */|;
Если мы доберемся сюда, это означает, что пространство шаблона начинается со строки, содержащей HS55_LH_OPTALL_GND_Z
и заканчивается строкой, содержащей ;
. Для этого пространства шаблонов мы ставим /*
перед первым H
и */
после первого ;
.
Используйте не жадное сопоставление:
pcregrep -Mno '^\s*HS55_LH_OPTALL_GND_Z.*(\n|.)*?;$' file
Вывод:
5: HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id0(.A (1'b1), .Z
(minor_rev[0]));
7: HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id1(.A (1'b1), .Z
(minor_rev[1]));
10:HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id2(.A (1'b1), .Z
(minor_rev[2]));
12: HS55_LH_OPTALL_GND_Z opt_plug_minor_rev_id3(.A (1'b1), .Z
(minor_rev[3]));
Вы также можете прокомментировать строки с помощью Vim:
:%s!^\s*\zsHS55_LH_OPTALL_GND_Z\_.\{-};$!/* & */!
Результат:
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