如何在字符串中搜索特定单词/模式的最后一次出现并将其替换为另一个单词?
例如,搜索词是 aaa
和替换词是 zzz
输入:aaa bbb ccc bbb aaa
所需输出:aaa bbb ccc bbb zzz
s/aaa/zzz/
替换第一个词。是否有其他选项可以反向搜索?
最佳答案
使用 sed:
x='aaa bbb ccc bbb aaa'
sed 's/\(.*\)bbb/\1zzz/' <<< "$x"
aaa bbb ccc zzz aaa
使用 perl 命令行:
sed 不支持环视,所以如果你想给 perl 一个机会:
perl -pe 's/aaa(?!.*?aaa)/zzz/' <<< "$x"
aaa bbb ccc bbb zzz
关于regex - 使用 sed 向后搜索和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19035938/