正規表現のコンテキストと一致

正規表現のコンテキストと一致

私はegrepこの-oオプションを使用して行の一致する部分を取得します。

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

今、ゲームのいくつかの文脈、つまり左と右の一部のキャラクターを見たいと思います。これを達成する1つの方法は次のとおりです。

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]

おすすめ記事