为何Kali Linux中无g命令的sed仍替换所有行的匹配内容?
问题原因及解决方法
核心原因
sed 的 s 替换命令默认会遍历文件的每一行,对每一行中第一个匹配到的目标字符串进行替换。你执行的sed 's/I/You/'没有指定行范围,所以它会处理文件里的所有行——只要某一行存在“I”,该行的第一个“I”就会被替换成“You”,这就是为什么两行的“I”都被替换了。
实现预期效果的方法
如果只想替换第一行的“I”,需要给替换命令加上行地址限定,指定仅处理第1行:
sed '1 s/I/You/' <oldfile >newfile
这里的1就是行地址,表示只对第1行执行后续的替换操作,第2行的“I”会被保留。
内容的提问来源于stack exchange,提问作者Likith Santosh
相关产品推荐
相关产品推荐

