Изменение кода совпадения регулярного выражения csh на tcl

Мне нужно изменить следующий кусок кода в оболочке на tcl. Пожалуйста помоги.

if (` expr $_f : proj_lp_ ` == 8) then

Мне нужен tcl-эквивалент условия внутри условия if.

Спасибо!

1 ответ

Смотрите страницу руководства expr, где говорится:

  STRING : REGEXP
          anchored pattern match of REGEXP in STRING

Так что ваши _f переменная содержит строку, и вы сравниваете ее с литеральной proj_lp_, Результатом является длина матча. В коде tcl это может быть if {[regexp {^proj_lp_} $_f]} { ...} как вы только заботитесь, если это соответствует. Вы также можете просто использовать if {[string match "proj_lp_*" $_f]} {...}, Страница expr(1) говорит, что это привязанное регулярное выражение - следовательно, добавление каретки. Оба примера, которые я привел, будут совпадать только в начале входной строки (т.е. они привязаны).

Другие вопросы по тегам