Como posso usar uma variável shell para copiar um padrão sed?

0

Eu tenho padrões de SED:

[^a-zA-Z0-9]

/b\./s/.*c\.. \([^ ]*\) .*//p

e assim por diante.

Eu preciso passar isso para um comando echo como variáveis.

No momento, eu defino a variável $ pattern assim:

$pattern="[^a-zA-Z0-9]"

e depois canalizá-lo para ecoar, assim:

echo "$OUTPUT" | sed "s/$pattern/g"

Mas o código não está passando o padrão, mas um comando e retorna o erro

=[^a-zA-Z0-9]: command not found

O que está errado?

    
por Michael Riordan 07.12.2017 / 17:45

2 respostas

2

$ pattern='[^a-zA-Z0-9]'
$ echo "123 ABC" | sed "s/$pattern/g"
sed: -e expression #1, char 16: unterminated 's' command
$ echo "123 ABC" | sed "s/$pattern//g"
123ABC
$ echo "123 ABC" | sed "s/$pattern/XYZ/g"
123XYZABC

E ...

Shell variables are assigned without a leading $.

    
por 07.12.2017 / 17:57
1

Substituir

$pattern="[^a-zA-Z0-9]"

por

pattern="[^a-zA-Z0-9]"

As variáveis do shell são atribuídas sem um $ inicial.

    
por 07.12.2017 / 17:55