我的字符串如下:
[ -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 s@"/sbin/runuser .* -c \"${RC_VCS}"@"/sbin/runuser - $myuser -c \"${RC_VCS}"@g
而${RC_VCS}
为/etc/init.d/vcs
而$myuser
为dummy
我的输出结果如下:
[ -f /sbin/runuser ] && eval '/sbin/runuser - dummy -c "/etc/init.d/vcs -start"
任何人都可以帮助我,为什么sed命令只是在替换期间占用了一半的字符串以及如何替换该字符串中的单词?
答案 0 :(得分:0)
你可以这样做:
sed -E 's#(/sbin/runuser - )[^ ]+#\1runuser#' file.txt
当字符root
前面有myuser
时,它将仅用root
替换字符串/sbin/runuser -
的实例。