Я использую эту команду для удаления нескольких вхождений строки в моем скрипте, и она просто отлично работает, когда я запускаю ее в командной строке. Однако, когда я использую эту строку в моем скрипте perl, она выдает ошибку SED: синтаксическая ошибка в строке script.pl 19, рядом с "; $ '". Ниже строка в моем сценарии. Я пытался избежать $, но это помогло

sed '/<\/data_item>/{N;/<\/data_item>$/{N;$'!'{s/\n//;D}}}' $WX ;

1 ответ1

0

Хорошо, давая вам преимущество сомнения (что вы определили свою собственную подпрограмму под названием sed), ваше утверждение "Perl" разбивается следующим образом:

sed                                           # A call to a subroutine called "sed"
                                              # that you've defined ?

'/<\/data_item>/{N;/<\/data_item>$/{N;$'   # A string surrounded by single quotes

!                        # an exclamation mark

'{s/\n//;D}}}'           # another string surrounded by single quotes

$WX;                     # a scalar variable called "WX"

Фактическая синтаксическая ошибка, которую вы получаете из-за восклицательного знака. В Perl вы не можете просто помещать символы вне строк и объединять их с окружающими строками, как в оболочке.

Даже в оболочке, я не уверен, сработает ли строка, которую вы указали в кавычках. Поэтому я думаю, что вам действительно нужно расширить свой первоначальный вопрос, чтобы развить это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .