sed:使用 § 作为分隔符时替换表达式中的错误选项

sed:使用 § 作为分隔符时替换表达式中的错误选项

我试图使用§(0xA7) 作为 sed 命令的分隔符:

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

我得到:

sed: bad option in substitution expression

或(在不同的 Linux 系统上):

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

如果我将其更改为@

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

有用。

为什么?

答案1

因为据我所知期待一个字符作为分隔符,您的 char 是 unicode U+A7

man ascii | grep A7

返回没有什么

就像@steeldriver 在评论中所说,§用两个字节编码,看:

$ od -c <<< §
0000000 302 247  \n
0000003

相关内容