regex - 使用 sed 向后搜索和替换

标签 regex perl sed

如何在字符串中搜索特定单词/模式的最后一次出现并将其替换为另一个单词?

例如,搜索词是 aaa和替换词是 zzz
输入:aaa bbb ccc bbb aaa
所需输出:aaa bbb ccc bbb zzzs/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/

相关文章:

javascript - 仅替换全局正则表达式的第一个匹配项

python - 与 Python Regex 完全匹配的数字或数字限制

linux - 如何在文件中仅添加带有制表符/空格的那些行,带有 esc 字符?

perl - 有没有一种方法可以在Perl中输出未通过管道传递的调试消息?

perl 构造函数关键字 'new'

linux - 如何从 linux 中的字符串中获取子字符串?

linux - 将文件内容与其他文件名匹配以提取和合并内容

regex - Checkstyle:尾随空格正则表达式问题

macos - 命令末尾\后面的多余字符

regex - 如何使用正则表达式提取json字段?