【发布时间】:2019-03-15 11:36:03
【问题描述】:
我在 Linux 机器上的 xxxxx(HOST=xxxx.xx.com) 之类的文件中进行了一些测试
我想用 HOST 搜索并替换 = 直到 ) 之后的部分
请建议如何使用 sed 进行此操作
【问题讨论】:
我在 Linux 机器上的 xxxxx(HOST=xxxx.xx.com) 之类的文件中进行了一些测试
我想用 HOST 搜索并替换 = 直到 ) 之后的部分
请建议如何使用 sed 进行此操作
【问题讨论】:
给你:
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,看看会发生什么。)
【讨论】: