我想
pm.max_children = 5
成为;
pm.max_children = 8
并且一直在研究它,但没有解决方案。像1或2这样的后向引用似乎不能用于计算。
sed -i -E "s/(pm.max_children)[^=]*=s*(.+)/1 = $(echo 2+3)/" /usr/local/etc/php-fpm.d/www.conf
只要问题解决了,使用perl命令是可以的。
谢谢。
perl -i.bak -wpe's/pm.max_childrens*=s*K([0-9]+)/$1 + 3/e' file
这保留了由于.bak
的备份;如果您不需要备份,请删除(测试后)。
K
的正面后看删除所有以前的匹配,使它们不再包括在$&
的整体匹配中,因此任何之前匹配的内容都保留在字符串中,而不必在替换部分中恢复。
使用sed
$ sed 's/(.* )(.*)/echo 1 $((2+3))/e' /usr/local/etc/php-fpm.d/www.conf
pm.max_children = 8
有很多方法,这是其中之一:
perl -lpe 's/(?<= = )(d)/${1}+3/e' <<< 'pm.max_children = 5'
精确匹配:
perl -lpe 's/pm.max_children = K(d)/${1}+3/e' <<< 'pm.max_children = 5'
只匹配末尾的数字:
perl -lpe 's/(d)$/${1}+3/e' <<< 'pm.max_children = 5'
输出:
pm.max_children = 8
对于文件,您可以使用-i
就地保存,而不是<<<
(这里的文档用于测试)使用文件。
perl -i -lpe '...' <FILE>