用sed代替递归shabang

时间:2017-01-17 00:39:11

标签: bash shell sed

我正在尝试使用sed从文件夹(对于android中的运行程序)递归替换所有shabang。 当我尝试使用“正常单词”时,该命令效果很好但是当我尝试使用shabang时会变得很头疼。我尝试了一切,我得到了错误:

  • 替换表达式中的错误选项

  • 无与伦比的'/'

  • 未找到活动

我是新手,这可能是错误的,所以这里是代码(tsst是我的文件夹):

grep -rl "env python" tsst |xargs sed -i "s/\#!/usr/bin/env python/\#!/system/python2.7.9//g"

我也试过变量:(代码的第一部分很好..我只是在有问题的地方复制。)

sed -i "s/$old/$new/g"

sed -i 's/"$old"/"$new"/g'

sed -i "s/'\#!\/usr\/bin\/env python'/'\#!\/system\/python2.7.9\/'/g"

我做错了什么?

1 个答案:

答案 0 :(得分:1)

试试这个正则表达式。您不能将/混合为正则表达式分隔符和要匹配的实际字符。您可以使用任何字符作为正则表达式分隔符,例如|,只要您在所有3个点中使用它而不是/

$ echo '#!/usr/bin/env python'  | sed 's|#!/usr/bin/env python|#!/system/python2.7.9|g'
#!/system/python2.7.9