Попробуйте, пожалуйста (GNU sed):
$ echo "assign sample_signal = '0;" | sed -n '/[\x27]/!{s/assign/always @(*)/g; p}'
$ echo "assign sample_signal = 0;" | sed -n '/[\x27]/!{s/assign/always @(*)/g; p}'
always @(*) sample_signal = 0;
Две ошибки, которые вы сделали:
1. /[^\x27]/
означает соответствие любому символу, который не является '
, но есть много символов, которые не '
, поэтому регулярное выражение будет соответствовать в любом случае.
2. Вы не использовали -n
, который должен подавлять вывод, так что совпадать или нет, s убирать или нет, строка все равно будет напечатана.
Поэтому я изменил на /[\x27]/!{}
, что означает, что при совпадении \x27
не выполняется блок {}
.
(В слове sed
это будет выполнено , если не сопоставлено .)
И с помощью переключателя -n
и p
в блоке строки с '
игнорируются.