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

관련 정보