匹配特定模式指定次数时行尾追加内容:sed命令失效问题
解决方法:针对行内第N次匹配模式追加内容
你的问题出在原sed命令的逻辑上:你尝试对行首匹配abcxyz的行,去替换行尾($)第2次——但一行只有一个行尾,这个操作完全不符合你的需求。你真正需要的是,在一行内第2次出现abcxyz的位置后面追加内容,以下是正确的实现方式:
用sed快速解决
直接使用sed的替换功能,指定只替换第2次匹配到的目标模式,并用&指代匹配到的内容,在后面追加你需要的字符串:
sed 's/abcxyz/& someValueAddedHere/2' File1 > OutputFile
效果验证
原文件File1内容:
abcxyz b abcxyz abcxyz b c
执行命令后,OutputFile内容:
abcxyz b abcxyz someValueAddedHere abcxyz b c
完全符合你的期望。
原理说明
s/abcxyz/& someValueAddedHere/:表示把匹配到的abcxyz替换为abcxyz someValueAddedHere(&代表匹配到的原字符串)- 末尾的
/2:指定只对该行内第2次出现的匹配项执行替换操作
如果你的需求是针对其他次数(比如第3次),只需要把2改成对应数字即可。
内容的提问来源于stack exchange,提问作者DazzlerJay
相关产品推荐
相关产品推荐

