使用sed向后搜索和替换

时间:2013-09-26 18:30:25

标签: regex perl sed

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

例如,搜索字词为aaa,替换字词为zzz

输入:aaa bbb ccc bbb aaa

所需输出:aaa bbb ccc bbb zzz

s/aaa/zzz/取代第一个单词。是否有其他选项可以反向搜索?

2 个答案:

答案 0 :(得分:4)

使用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

答案 1 :(得分:0)

如果我们反转字符串,用sed更改反向字符串中的FIRST事件,然后将结果反转回正常顺序怎么办:

GetRepository().GetCurrentLoggers()

如果我们只需要替换一个符号,它就可以正常工作。对于单词,您需要反转,模式和替换单词。