【发布时间】:2013-09-26 18:30:24
【问题描述】:
如何在字符串中搜索特定单词/模式的最后一次出现并将其替换为另一个单词?
例如,搜索词是aaa,替换词是zzz
输入:aaa bbb ccc bbb aaa
所需输出:aaa bbb ccc bbb zzz
s/aaa/zzz/ 替换第一个单词。是否有任何其他选项可以反向搜索?
【问题讨论】:
-
以您的示例为例,您可以将搜索模式锚定到行尾,即
echo "aaa bbb ccc bbb aaa" | sed 's/aaa$/zzz/',但这就是所谓的脆弱解决方案。 (您可以使用's/aaa[ ]*$/zzz/'. 在行尾考虑额外的空格,但仍然很脆弱;-))。祝你好运。 -
@shellter 如果我想用
yyy替换最后一次出现的bbb怎么办? :P -
这就是为什么我说这是一个脆弱的解决方案,因为改变规范有危险;-)。很高兴你得到了答案。