我试图将#!/usr/bin/python
更改为#!/usr/bin/python2.6
我尝试过以下命令行:
sed -i -e 's/.#!/usr/bin/python.*/#!/usr/bin/python2.6/' /usr/bin/yum
...返回以下错误:
sed: -e expression #1, char 11: unknown option to `s'
我无法在Google的任何地方找到一个好的答案。
提前致谢。
答案 0 :(得分:2)
您收到此错误是因为sed
将s/.#!/usr/b
解释为您的第一个s
earch&替换命令,b
不是命令的有效标志
实际上,这些命令的语法是s<delimiter><search pattern><delimiter><replace><delimiter><flags>
,其中使用最广泛的<delimiter>
是/
。
您可以在搜索模式中转义/
并替换字符串,这样它们就不会被解释为分隔符,但是由于您有很多这样的分隔符,我建议使用另一个分隔符。
例如,使用+
作为分隔符,sed
命令将变为sed -i -e 's+.#!/usr/bin/python.*+#!/usr/bin/python2.6+'
。
作为旁注,你命令中的第一个.
可能是一个错误,因为shebang应该直接写在它出现的文件的开头。
答案 1 :(得分:1)
我假设您的行是您文件的第一行。使用GNU sed:
sed '1s/python$/&2.6/' file
如果你想编辑你的文件&#34;就地&#34;使用sed的选项-i
。