sed: má opção na expressão de substituição ao usar § como delimitador

0

Eu estava tentando usar § (0xA7) como o delimitador de um comando sed:

sed -i'' 's§error_log = /var/log/php-fpm.log§error_log = /proc/self/fd/2§' /etc/php5/php-fpm.conf

Eu recebo:

sed: bad option in substitution expression

ou (em um sistema Linux diferente):

sed: -e expression #1, char 66: Unknown option to 's'

Se eu alterar isso para @ :

sed -i'' 's@error_log = /var/log/php-fpm.log@error_log = /proc/self/fd/2@' /etc/php5/php-fpm.conf

funciona.

Por quê?

    
por AndreKR 01.03.2018 / 15:00

1 resposta

3

Como a espera um caractere como delimitador, seu caractere é unicode U+A7 :

man ascii | grep A7

retorna nada .

E como @steeldriver disse no comentário, § está codificado com dois bytes, veja:

$ od -c <<< §
0000000 302 247  \n
0000003
    
por 01.03.2018 / 15:03

Tags