Поиск в командной строке Perl и замена на несколько выражений
Я использую Perl для поиска и замены нескольких регулярных выражений. Когда я выполняю следующую команду, я получаю сообщение об ошибке:
prompt> find "*.cpp" | xargs perl -i -pe 's/##(\W)/\1/g' -pe 's/(\W)##/\1/g'
syntax error at -e line 2, near "s/(\W)##/\1/g"
Execution of -e aborted due to compilation errors.
xargs: perl: exited with status 255; aborting
-e
в Perl имеется несколько -e
, почему это не работает? Есть ли этому решение?
Ответы
Ответ 1
-e
несколько -e
.
Вам не хватает ';'
find "*.cpp" | xargs perl -i -pe 's/##(\W)/\1/g;' -pe 's/(\W)##/\1/g;'
Заявления Perl должны заканчиваться ;
, Заключительный оператор в блоке не нуждается в конечной точке с запятой. Таким образом, единственный -e
без ;
будет работать, но вам придется добавить ;
когда у вас несколько -e
.