정규식을 사용하여 단어 목록을 검색합니다. 3글자 대신 2글자 단어를 찾아보세요. 왜?

정규식을 사용하여 단어 목록을 검색합니다. 3글자 대신 2글자 단어를 찾아보세요. 왜?

정규 표현식을 작업 중인데 당황스럽습니다. 지금까지의 과정은 다음과 같습니다.

이 파일을 다운로드했습니다.

wget http://www.mieliestronk.com/corncob_lowercase.txt
mv corncob_lowercase.txt words.txt

3글자 단어 다 갖고싶다...

grep '^...$' words.txt

그러면 "abe"가 검색됩니다.

grep '^abe.$' words.txt

"abe"를 찾지 못했습니다.

grep '^abe$' words.txt

이는 실제로 Arch Linux와 함께 제공되는 라이브러리에서 "abe"로 발견됩니다.

grep '^abe$' /usr/share/dict/cracklib-small

나는 이 질문 때문에 당황스러워요.

답변1

$ file corncob_lowercase.txt 
corncob_lowercase.txt: ASCII text, with CRLF line terminators

DOS 줄 끝이 문제의 원인일 수 있습니다. CR은 적어도 어떤 목적에서는 문자로 간주됩니다.

dos2unix, 또는 을 실행하기 전에 tr -d '\r'을 실행하십시오 grep.

관련 정보