如何更换sed中的一行?

时间:2013-08-09 06:54:23

标签: bash replace sed

我有一个配置文件,其中包含一行ServerIP=。现在我想使用find this line并为其添加一个新的IP地址,即用ServerIP=192.168.0.101替换它,命令是什么样的?

4 个答案:

答案 0 :(得分:2)

您可以使用find-and-replace命令执行此操作:

sed -e 's/\(^ServerIP=\)/\1192.168.0.101/g' your_file

我们是在整个文件中执行此操作还是仅在一个位置执行此操作?上面的命令应该在任何地方替换它。你必须在某处发送输出。我永远不会使用sed进行编辑,因为我犯了太多错误。

一个棘手的问题是这个部分\1192.168.0.101,它实际上可以像这样分解:

\1 --> the thing we captured
192.168.0.101 --> the thing we are placing IMMEDIATELY after the thing we captured

此外,您可能有其他线条看起来有点不同。但是,在未来,请查找“sed capture and replace”。

答案 1 :(得分:1)

无论ServerIP中是否存在现有值,这个都可以使用:

sed -i 's@\([[:blank:]]*ServerIP=\)[[:digit:].]*@\1192.168.0.101@' file

我还建议你尝试使用像VIM或Nano这样的CLI编辑器来学习。

答案 2 :(得分:0)

尝试:

sed -i 's/^ *ServerIP=/&192.168.0.101/' file

答案 3 :(得分:0)

我愿意:

sed -i 's/^ServerIP=$/ServerIP=192.168.0.101/' file.config