2012-10-12 4 views
2

sed와 regex를 사용하여 줄 끝에 문자열을 추가하려고합니다.문자열을 일치시켜 교체에 추가하려고합니다.

I 다음 문자열이 있습니다

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 

disable_functions = $ 1exec, system, shell_exec, passthru 문자열에 $ 1을 추가하는 것 같습니다.

어디로 잘못 가고 있습니까?

답변

2

것을보십시오 : 출력 OK 보인다

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

경우, 파일을 수정 -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 점 밖으로, 당신은 단순히 해당 라인을 찾아 원하는 텍스트를 추가 할 필요에 따라; 이전 값을 일치시키고 다시 삽입 할 필요가 없습니다.

관련 문제