지정된 수량자를 사용하여 grep에서 만족스러운 단어 검색

지정된 수량자를 사용하여 grep에서 만족스러운 단어 검색

파일에서 단어를 가져오려고 합니다.

$ grep -o '\*\*[^*]*\*\*' Principles_20_LifePrinciples.md | grep -v -e "Origin" -e "Etymology"
**circumstance**
**case**
**condition**
**Anxiety**
**anxiety**
**the state of feeling nervous or worried that sth bad is going to happen**
**a worry or fear about sth**
**a strong feeling of wanting to do sth or of wanting sth to happen**

내가 원하는 결과는 텍스트만 얻는 것입니다.

**circumstance**
**case**
**condition**
**Anxiety**
**anxiety**

지정된 한정자를 사용하여 코드를 리팩터링합니다 {,20}.

$ grep -E -o '\*\*[^*]{,20}\*\*' Principles_20_LifePrinciples.md

불행히도 아무것도 반환하지 않습니다.

그러한 문제를 해결하는 방법은 무엇입니까?

답변1

BSD grep의 경우 man 7 re_format지원되는 정규식에 대한 자세한 내용은 참고자료를 참조하세요. 구체적으로 다음과 같이 명시되어 있습니다.

 A bound is `{' followed by an unsigned decimal integer, possibly followed
 by `,' possibly followed by another unsigned decimal integer, always fol-
 lowed by `}'.  The integers must lie between 0 and RE_DUP_MAX (255=)
 inclusive, and if there are two of them, the first may not exceed the
 second.

첫 번째 숫자는 두 번째 숫자만 생략할 수 있습니다.가지다주다.

이 수정 사항을 사용하면 다음과 같습니다.

$ /usr/bin/grep --version
grep (BSD grep) 2.5.1-FreeBSD
$ /usr/bin/grep -Eo '\*\*[^*]{0,20}\*\*' foo
**circumstance**
**case**
**condition**
**Anxiety**
**anxiety**

관련 정보