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)
但这是错误的.有没有更好的方法来直接搜索和替换字符串?
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)