2016-06-28 144 views
0

我的字符串如下:sed命令不替換整個字符串

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

替換字符串後,我需要一個輸出如下:

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

隨着sed命令的幫助,我試圖取代相同的,但它只是取代了一半的字符串。我用下面的命令:

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

${RC_VCS}/etc/init.d/vcs$myuserdummy

我對相同的輸出來如下:

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

任何人都可以請幫我爲什麼sed命令只是在更換過程中取出一半字符串,以及如何替換該字符串中的單詞?

+0

請查看[editing-help](http://stackoverflow.com/editing-help)。 – Cyrus

回答

0

你可以這樣做:

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

當字符串root/sbin/runuser -它之前將myuser替換字符串root的唯一實例。