2016-06-28 3 views
0

내 문자열은 다음과 같다 : SED 명령의 도움으로나오지 명령은 전체 문자열을 대체하지 않습니다

[ -f /sbin/runuser ] && eval '/sbin/runuser - myuser -c "/etc/init.d/vcs -start"' || /bin/su - root -c "/etc/init.d/vcs -start" 

내가 노력하고 다음과 같이

[ -f /sbin/runuser ] && eval '/sbin/runuser - root -c "/etc/init.d/vcs -start"' || /bin/su - root -c "/etc/init.d/vcs -start" 

문자열의 교체 후 내가 출력을 필요로 같은 것을 대체하지만 문자열의 절반 만 대체합니다. 나는 다음과 같은 명령을 사용하고 있습니다 : /etc/init.d/vcs하고 $myuser은 다음과 같은에 대한 dummy

내 출력이 온다

sed [email protected]"/sbin/runuser .* -c \"${RC_VCS}"@"/sbin/runuser - $myuser -c \"${RC_VCS}"@g 

${RC_VCS} 반면 :

[ -f /sbin/runuser ] && eval '/sbin/runuser - dummy -c "/etc/init.d/vcs -start" 

사람이 나를 도와 주실 수있는 이유 sed 명령은 대체하는 동안 문자열의 절반 만 가져 가고 어떻게 그 문자열에서 단어를 대체 할 수 있습니까?

+0

[편집 - 도움말] (http://stackoverflow.com/editing-help)을 살펴보십시오. – Cyrus

답변

0

당신은 할 수 있습니다 : 문자열 root/sbin/runuser - 앞에 때

sed -E 's#(/sbin/runuser -)[^ ]+#\1runuser#' file.txt 

그것은 myuser와 문자열 root의 인스턴스를 대체합니다.

관련 문제