2012-10-12 33 views
2

我想添加一個字符串到一個使用sed和正則表達式的行末尾。試圖匹配一個字符串,並將其添加到替換

我有以下字符串:

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, 

和IM嘗試添加到它的結束串:

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,系統,shell_exec,passthru,

我哪裏錯了?

回答

2

試一下:

sed '/^disable_functions/s/$/exec,system,shell_exec,passthru,/' /etc/php5/apache2/php.ini 

如果輸出看起來OK,然後加入-i開關修改文件。

$這裏,意思是行尾

+0

更好的方法讓它完成,更整潔! – gazzwi86

+0

不客氣gazzwi86 ... –

1

你的原始命令缺少這臺\1(不$1)值的捕獲組:

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

但作爲sputnick點了,你只需要找到合適的線路和追加所需的文字;沒有必要匹配舊值並重新插入它們。

相關問題