sed-和号后匹配整行

时间:2019-10-04 15:46:48

标签: regex sed

我无法让sed匹配(并替换)包含“&”符号的整行。它似乎一直匹配到第一个“&”号,然后停止匹配。并且替换字符串仅替换该部分,而不替换整个行。

sed -i 's/^error_reporting = .*/error_reporting = E_ALL \& \~E_DEPRECATED \& \~E_STRICT \& \~E_NOTICE/' /etc/php.ini

替换是正确的,但转义符是转义符。但是不会替换整个行,而只是替换第一个现有的“&”号之前的部分。我该如何指定sed以匹配包括与号在内的所有内容?

更新:我发现了问题所在。我是从javascript脚本中调用sed命令的,它在将字符传递给sed命令之前对其进行了转义。两次转义字符串可解决此问题。

1 个答案:

答案 0 :(得分:1)

也无法在MacOS上使用GNU sed或默认BSD sed复制

$ echo 'error_reporting = a & ~b & c' | gsed 's/^error_reporting = .*/error_reporting = E_ALL \& \~E_DEPRECATED \& \~E_STRICT \& \~E_NOTICE/'
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE