我正在尝试使用以下命令替换文件中的第一次出现sed
:
sed -i s/he/He/ dummy.txt
Run Code Online (Sandbox Code Playgroud)
它不是替换第一次出现,而是替换所有出现,即使没有/g
.
根据文档,它应该只替换第一个。
该sed
版本是:
GNU sed version 4.1.5
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?或者不同sed
实现的行为是否不同?
sed 逐行处理输入。修饰符/g
会影响它是替换一行中所有出现的内容,还是仅替换第一个:
echo hehe | sed s/h/H/
echo hehe | sed s/h/H/g
Run Code Online (Sandbox Code Playgroud)
要仅替换文件中的第一个匹配项,请使用如下所示的内容:
s/h/H/ # Replace.
ta # Go to a if s/// worked.
b # Otherwise, start the next cycle.
:a { n # Process the next line.
ba # Go to a.
}
Run Code Online (Sandbox Code Playgroud)