grep -o 正規表現の問題

grep -o 正規表現の問題

--only-matchingフラグでgrepコマンドを使用しようとしていますが、期待どおりに機能しません。

このコマンドは次のとおりです。

echo "1/2/3/4/5" | grep -oE "^([^/]+/){0,2}"

次の出力を提供します。

1/2/
3/4/

ただ期待していた1/2/

どうなりますか?行の先頭ではないので、3/4/一致してはいけません.."^([^/]+/){0,2}"

GNU grepの実行2.5.1)

答え1

それは抜け穴GNU Grep以前のバージョンでは今回提出してくださいGNU(つまり、バージョンより前2.5.3)。

変更ログの関連部分を引用するには:

Previously failing tests relative to left anchors (^ and \<) and -w should now pass.

これ初期コミットエラーを説明するためにテストが追加されました。

# End of a previous match should not match a "start of ..." expression.
grep_test "word_word/" "word_/" "^word_*" -o

関連情報