我在Linux机器上的xxxxx(HOST=xxxx.xx.com)
这样的文件中进行了一些测试
我想用HOST搜索并替换=直到)之后的部分
请建议如何使用sed
答案 0 :(得分:0)
您在这里:
sed -e 's/\((HOST=\)[^()]*\()\)/\1REPLACEMENT\2/' myfile
如果您希望Sed就地编辑(更改) myfile (注意:这将更改 myfile 的内容),则:
sed -e 's/\((HOST=\)[^()]*\()\)/\1REPLACEMENT\2/' -i myfile
工作原理
s///
是Sed的替代命令。因此,s/foo/bar/
用foo
替换每次出现的bar
。
解决问题的建议模式包括三个部分:
(HOST=
[^()]*
)
中间部分匹配不带括号的任何内容,中间部分结尾的星号*
表示要匹配非括号的零个或多个字符。在您的示例中,“ xxxx.xx.com”是匹配的。
如图所示,\(
的第一部分和最后一部分由转义括号捕获\)
。有两个捕获。在替换模式中,\1
和\2
打印捕获的文本。 (如果不确定我刚才说的是什么,请尝试使用\1\1\1
而不是\1
来查看其效果。)