用具有可变项的sed替换文本

时间:2011-06-28 20:02:02

标签: sed

我有一个

的脚本文件
**************************************************
case $arg in

-start)

**./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@**

if test $? -ne 0 ; then

exit 1

fi

;;

-version)

./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config -i -v $@

if test $? -ne 0 ; then

exit 1

fi

;;

-configtest)

./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config -i -c $@

if test $? -ne 0 ; then

echo 'failure: configuration test failed'

exit 1

fi

echo 'success: configuration was parsed successfully'

;;

-shell)

/bin/sh

;;

*)

echo "Usage: start [-start|-shell|-version|-configtest]"

exit 1

;;

**********************************************

我想替换

"./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@" 

"newtask -p $Project_Name ./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@"

我厌倦了使用sed,但它不允许接受可变的数据。 你可以帮助我吗?通过捆绑各种各样的东西,我已经脱离了我的大脑......

提前致谢。

2 个答案:

答案 0 :(得分:0)

你想要这一行:

./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@

看起来像这样:

newtask -p $Project_Name ./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@

对吗?然后:

只需使用单引号(')将命令和管道(|)包装为分隔符:

sed -i.bak 's|./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@|newtask -p $Project_Name ./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@|' scriptfile

答案 1 :(得分:0)

sed -e 's|./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@|newtask -p $Project_Name ./$PRODUCT_BIN -d $PRODUCT_SUBDIR/config $@|' scriptfile