在fodler中的所有文件中,我正在尝试替换该类型的所有字符串:
load(alpha)
到
load(alpha, lib="lib=~/project-a/alpha")
使用sed我试过:
find . -type f -print0 | xargs -0 sed -i 's/load(alpha)/load(alpha, lib="lib=~/project-a/alpha")/g'
但我收到错误: sed:-e表达式#1,char 39:`s'
的未知选项知道我错过了什么吗? 谢谢!
答案 0 :(得分:1)
您收到该错误,因为带有substitute命令的/
分隔符与您替换中的目录分隔符冲突;遇到第一个目录分隔符后,sed认为替换已中止。将分隔符更改为其他内容以获得更清晰的命令。
sed -i 's!load(alpha)!load(alpha, lib="lib=~/project-a/alpha")!g'
答案 1 :(得分:0)
find . -type f -print0 | xargs -0 sed -i 's/load(alpha)/load(alpha, lib="lib=~\/project-a\/alpha")/g'
在您的命令中,字符/
是分隔符,因此您需要转义属于数据的任何正斜杠,如/project-a/alpha
- > \/project-a\/alpha
或者,您可以使用不同的分隔符(在本例中为#
字符)
find . -type f -print0 | xargs -0 sed -i 's#load(alpha)#load(alpha, lib="lib=~/project-a/alpha")#g'