Regex 尝试匹配字符串并将其添加到替换中

Regex 尝试匹配字符串并将其添加到替换中,regex,linux,bash,sed,Regex,Linux,Bash,Sed,我试图使用sed和regex将字符串添加到一行的末尾 我有以下字符串: disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_la

我试图使用sed和regex将字符串添加到一行的末尾

我有以下字符串:

disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
我正试图在它的末尾添加一个字符串:

exec,system,shell_exec,passthru,
我的尝试如下:

sed -ie 's/disable_functions = .*[a-zA-z,]$/disable_functions = $1exec,system,shell_exec,passthru,/gI' /etc/php5/apache2/php.ini
它似乎只是将$1添加到字符串disable_functions=$1exec、system、shell_exec、passthru、

我哪里出错了?

试试看:

sed '/^disable_functions/s/$/exec,system,shell_exec,passthru,/' /etc/php5/apache2/php.ini
如果输出看起来正常,则添加
-i
开关以修改文件


$
此处为行尾。

您的原始命令缺少设置
\1
值的捕获组(不是
$1
):

但是正如
sputnick
所指出的,您只需找到合适的行并附加所需的文本;无需匹配旧值并重新插入它们

sed -ie 's/disable_functions = \(.*[a-zA-z,])\$/disable_functions = \1exec,system,shell_exec,passthru,/gI' /etc/php5/apache2/php.ini