替换sed中具有正斜杠的字符串

Sub*_*thi 2 linux shell awk sed

我希望更换

x.y.z.zz=/a/b/c/d/
Run Code Online (Sandbox Code Playgroud)

x.y.z.zz=/a/b/e/d/
Run Code Online (Sandbox Code Playgroud)

x.y.z.zz事先知道.我也提前知道行号.我试过这个

sed  "11s/.*/x.y.z.zz=\/a\/b\/e\/d\/" filename
Run Code Online (Sandbox Code Playgroud)

但这是错误的.有没有更好的方法来直接搜索和替换字符串?

fed*_*qui 5

sed使用sed 's/pattern/replacement/'语法替换.在你的情况下,你错过了最后一个/.所以通过这样说它会起作用:

sed '11s/.*/x.y.z.zz=\/a\/b\/e\/d\//' file
                                   ^
Run Code Online (Sandbox Code Playgroud)

但是,使用另一个分隔符可能更清晰,因此语法更清晰.怎么样#?(它也可以是~,_等):

sed '11s#.*#x.y.z.zz=/a/b/e/d/#' file
Run Code Online (Sandbox Code Playgroud)

测试

$ cat a
a
x.y.z.zz=/a/b/c/d/
b
c
Run Code Online (Sandbox Code Playgroud)

让我们替换第2行:

$ sed '2s#.*#x.y.z.zz=/a/b/e/d/#' a
a
x.y.z.zz=/a/b/e/d/
b
c
Run Code Online (Sandbox Code Playgroud)