Bash 用sed递归替换沙邦

Bash 用sed递归替换沙邦,bash,shell,sed,Bash,Shell,Sed,我试图用sed递归地替换文件夹中的所有shabang(用于android中的运行程序)。 当我尝试使用“普通单词”时,该命令运行良好,但当我尝试使用沙邦时,该命令变得令人头痛。我尝试的每件事都出现了错误: 替换表达式中的坏选项 无与伦比的“/” 未找到事件 我是新手,这可能是begginer的错误,所以下面是代码(tsst是我的文件夹): 我还尝试了变量:(代码的第一部分很好..我只是在有问题的地方复制。) 我做错了什么 试试这个正则表达式。不能将/混用为要匹配的正则表达式分隔符和实际字符。

我试图用sed递归地替换文件夹中的所有shabang(用于android中的运行程序)。 当我尝试使用“普通单词”时,该命令运行良好,但当我尝试使用沙邦时,该命令变得令人头痛。我尝试的每件事都出现了错误:

  • 替换表达式中的坏选项

  • 无与伦比的“/”

  • 未找到事件

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

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


我做错了什么

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

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

您是否尝试过1)使用
find
而不是
xargs
,2)在单个文件上进行此替换,3)更简单的替换?谢谢!!它工作得很好我知道这是个愚蠢的错误。。但我没有想到这一点,现在我知道并理解了为什么它不起作用。。
sed -i "s/$old/$new/g"

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

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