Я хочу использовать sed в сценарии tcl для изменения файла (хранящегося в $file), который содержит строку:
prbs_match_out ‹= (ch0_prbs_match_dual3_int & ch0_prbs_match_dual2_int & ch0_prbs_match_dual1_int & ch0_prbs_match_int) & ( ch1_prbs_match_dual3_int & ch1_prbs_match_dual2_int & ch1_prbs_match_dual1_int & ch1_prbs_match_int);
to
prbs_match_out ‹= ch0_prbs_match_int & ch1_prbs_match_int;
Пытаться:
exec /bin/sed -i {s/(ch0_prbs_match_dual3_int & ch0_prbs_match_dual2_int & ch0_prbs_match_dual1_int & ch0_prbs_match_int) & ( ch1_prbs_match_dual3_int & ch1_prbs_match_dual2_int & ch1_prbs_match_dual1_int & ch1_prbs_match_int)/ch0_prbs_match_int & ch1_prbs_match_int/g} $file
Приведенная выше команда sed не работает (получается неверная замена). Как обрабатывать круглые скобки и амперсанды в sed?
prbs_match_out <=
наprbs_match_out <= ch0_prbs_match_int & ch1_prbs_match_int;
, или большая строка, которую вы включили, действительно единственная версияprbs_match_out <=
, которую вам нужно исправить? Также прочитайте grymoire.com/Unix/Sed.html. Удачи. - person shellter   schedule 03.04.2019prbs_match_out <= (ch0_prbs_match_dual3_int & ch0_prbs_match_dual2_int & ch0_prbs_match_dual1_int & ch0_prbs_match_int) & ( ch1_prbs_match_dual3_int & ch1_prbs_match_dual2_int & ch1_prbs_match_dual1_int & ch1_prbs_match_int);
- person LokSas   schedule 03.04.2019sed
не может легко сопоставлять шаблоны, которые растягиваются на несколько строк текста. В ваших примерах данных неясно, является ли это одной непрерывной строкой текста или отформатировано в несколько строк. Вам нужно экранировать скобки и&
символы, так как они имеют особое значение дляsed
регулярных выражений. Итак (возможно)s/\(ch0_prbs_match_dual3_int \& ....\)
... В зависимости от версии sed, которую вы используете, и любых параметров, которые вы включили, вам может не понадобиться экранировать скобки. Лучше всего сначала получить небольшой образец, а затем попробовать его на полной линии. Удачи. - person shellter   schedule 03.04.2019&
имеет особое значение в части замены командыs
. Если вы запускаете sed сsed -r
илиsed -E
, то вы используете ERE, и круглые скобки становятся особыми в шаблоне. - person glenn jackman   schedule 03.04.2019