匹配正则表达式的上下文

匹配正则表达式的上下文

我使用egrep-o选项是为了获取该行的匹配部分,例如

cat /usr/share/dict/words | egrep -o '(aa|ii)'

现在我想查看比赛的一些上下文,即左侧和右侧的一些字符。实现这一目标的一种方法是

cat /usr/share/dict/words | egrep -o '.{3}(aa|ii).{2}'

有没有更好(更高效、更优雅)的方法? (我已经浏览了egrep命令行选项,但没有找到用于此目的的选项。)

答案1

你可以这样做:

$ echo 'aabiicaa' | perl -lne '
   while (/aa|ii/g) {print substr($`,-3)."[$&]".substr($'\'',0,2)}'
[aa]bi
aab[ii]ca
iic[aa]

相关内容