Замените все <на <на perl в cygwin - PullRequest
0 голосов
/ 21 июня 2010

У меня установлен Cygwin, я хочу выполнить что-то вроде этого в командной строке:

perl -pne 's/&#60;/<' input > output

Но я сталкиваюсь с двумя отдельными проблемами с & и <, каждый из которых нужно экранировать

  • что-то вроде 's/&/&' - ошибка на уровне Perl
    • " Шаблон подстановки не заканчивается в строке -e 1 "
  • что-то вроде 's/</<' - ошибка на уровне оболочки
    • " Системе не удается найти указанный файл. "

Что мне нужно сделать, чтобы это исправить?

Ответы [ 2 ]

3 голосов
/ 21 июня 2010

Вам не хватает конечной косой черты:

perl -pne 's/&#60;/</' input > output

Поскольку символы & и <заключены в одинарные кавычки, они не интерпретируются оболочкой. </s>

2 голосов
/ 21 июня 2010

Серьезно, если у вас установлен CygWin, вы должны делать все, начиная с bash, а не cmd.exe.Он имеет намного больше возможностей, когда дело доходит до обработки и экранирования аргументов командной строки.

Сказав это, вы можете попытаться использовать символ ^ escape.Это стандартная опция для cmd.exe, и она может позволить вам хотя бы избавиться от проблемы с <:

Pax> echo <
The syntax of the command is incorrect.
Pax> echo ^<
<

Я не пробовал этого, так как у меня не установлен Perl намоя локальная Windows VM.У меня действительно есть CygWin на ноутбуке, но, как я уже сказал, я склонен использовать bash вместо cmd.exe.Поэтому все заботятся и не несут ответственности за этот ответ: -)

Pax> echo s/&#60;/<
The syntax of the command is incorrect.

Pax> echo s/^&#60;/^<
s/&#60;/</
...