SED: erro de sintaxe na linha 19 do script.pl, próximo a “; $ '”

0

Estou usando este comando para excluir várias ocorrências de uma linha no meu script e ele funciona bem quando eu o executo no prompt de comando. No entanto, quando eu uso essa linha no meu script perl, ele gera um erro SED: syntax error na linha 19 do script.pl, perto de "; $ '". Abaixo está a linha no meu script. Eu tentei escapar $, mas isso ajuda dint

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

    
por user3614491 09.05.2014 / 20:56

1 resposta

0

OK, dando a você o benefício da dúvida (que você definiu sua própria sub-rotina chamada sed ), sua instrução "Perl" é dividida da seguinte forma:

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"

O erro de sintaxe real que você está recebendo é por causa do ponto de exclamação. Em Perl, você não pode simplesmente colocar caracteres fora de strings e fazer com que eles se concatenem com as strings adjacentes, como você pode fazer com shell.

Mesmo no shell, não tenho certeza se a linha citada funcionaria. Então, acho que você realmente precisa expandir sua pergunta original para progredir.

    
por 09.05.2014 / 21:37

Tags