Sed命令替换文件中的第一个出现[重复]
Posted
技术标签:
【中文标题】Sed命令替换文件中的第一个出现[重复]【英文标题】:Sed command replace the first occurrence in file [duplicate] 【发布时间】:2020-12-07 06:19:35 【问题描述】:我正在尝试查找并替换现有文件的第一行,当我运行下面的sed
命令时,它正在替换所有具有匹配字符串的行,但我只想更改其中的一个位置文件。
sed -i 's/azure.com/test.com/' file_name
实际文件
server_name azure.com
server_name azure.com
预期结果
server_name test.com
server_name azure.com
【问题讨论】:
这能回答你的问题吗? How to use sed to replace only the first occurrence in a file? 【参考方案1】:您可以通过一个简单的循环使用便携式sed
来做到这一点。
sed '/azure\.com/
s//test.com/
:a
n
ba
' file
当你看到匹配时,替换;然后启动一个循环,它只消耗并打印文件的其余部分。
这在 Awk 中明显不那么晦涩难懂。如果你有 GNU Awk,你甚至有一个 -i inplace
选项,其行为类似于 sed 的 -i
选项。
awk '/azure\.com/ && !p sub(/azure.com/, "test.com"); p=1 ' file
【讨论】:
【参考方案2】:试试这个:
sed -i "0,/ azure.com: /s/ azure.com/ test.com/" file_name
它将仅替换文件中第一次出现的 azure.com。
【讨论】:
去掉多余的 / : 不,它不工作0
模式是 GNU sed
扩展。
sed -i "0,/azure.com/test.com/g" 文件名以上是关于Sed命令替换文件中的第一个出现[重复]的主要内容,如果未能解决你的问题,请参考以下文章