BSD와 GNU grep이 여기서 다른 결과를 제공하는 이유는 무엇입니까?

BSD와 GNU grep이 여기서 다른 결과를 제공하는 이유는 무엇입니까?

공개 CSV 파일의 약간 수정된 버전을 배포했습니다. 수정된 CSV 파일을 생성하기 위해 짧은 한 줄의 grep 명령을 사용했습니다.

grep -Ev '^([A-Za-zA-Za-z]|[0-90-9]*),' input.csv

실제 프로젝트는여기.

사용자보고서로케일이 올바르게 설정되어 있어도 Mac의 BSD grep은 GNU grep과 다른 결과를 제공합니다. 왜 이런 일이 발생하는지 잘 모르겠고 테스트할 Mac이나 BSD 시스템도 없습니다. (리눅스에 BSD grep을 설치하는 방법이 있나요? 빠른 검색으로는 아무것도 못 찾았는데...)

위 명령이 동일한 로케일에서 다른 결과를 반환하는 이유는 무엇입니까? 죄송합니다. 원본 CSV 파일은 제공되지 않지만 200MB를 초과하므로 다운로드할 수 있습니다.여기원한다면 lex.csvv2.3.0 입니다.


데이터를 좀 더 자세히 설명하기 위해 CSV 파일은 일본어 단어 목록입니다. 첫 번째 필드는 인용되지 않은 문자 그대로의 단어입니다. 여기서 정규식의 목표는 다음 항목 중 하나를 제거하는 것입니다.

  1. 라틴 알파벳의 편지[A-Za-zA-Za-z]
  2. 임의의 길이의 순수수[0-90-9]*

유니코드 문자는전각 라틴어일본에서 레거시적인 이유로 사용되는 캐릭터입니다.

다음은 무작위로 선택된 예시 데이터입니다.

Fishstat,16201,17684,438,名詞,普通名詞,一般,*,*,*,エフアイエスエイチエスティーエーティー,FISHSTAT,Fishstat,エフアイエスエイチエスティーエーティー,Fishstat,エフアイエスエイチエスティーエーティー,記号,*,*,*,*,*,*,体,エフアイエスエイチエスティーエーテ
ィー,エフアイエスエイチエスティーエーティー,エフアイエスエイチエスティーエーティー,エフアイエスエイチエスティーエーティー,16,C1,*,25110105422963200,91350
FINA,14662,15435,406,名詞,固有名詞,一般,*,*,*,エフアイエヌエー,FINA,FINA,エフアイエヌエー,FINA,エフアイエヌエー,固,*,*,*,*,*,*,固有名,エフアイエヌエー,エフアイエヌエー,エフアイエヌエー,エフアイエヌエー,7,*,*,57503092366778880,209195
FINA,14662,15435,406,名詞,固有名詞,一般,*,*,*,エフアイエヌエー,FINA,FINA,エフアイエヌエー,FINA,エフアイエヌエー,固,*,*,*,*,*,*,固有名,エフアイエヌエー,エフアイエヌエー,エフアイエヌエー,エフアイエヌエー,7,*,*,57503092366778880,209195
FIA,16210,17693,438,名詞,普通名詞,一般,*,*,*,エフアイエー,FIA,FIA,エフアイエー,FIA,エフアイエー,記号,*,*,*,*,*,*,体,エフアイエー,エフアイエー,エフアイエー,エフアイエー,5,C2,*,1099520251404800,4000
FIA,16210,17693,438,名詞,普通名詞,一般,*,*,*,エフアイエー,FIA,FIA,エフアイエー,FIA,エフアイエー,記号,*,*,*,*,*,*,体,エフアイエー,エフアイエー,エフアイエー,エフアイエー,5,C2,*,1099520251404800,4000
エフ・アイ・シー,14659,15432,-1018,名詞,固有名詞,一般,*,*,*,エフアイシー,FIC-FIC,エフ・アイ・シー,エフアイシー,エフ・アイ・シー,エフアイシー,固,*,*,*,*,*,*,固有名,エフアイシー,エフアイシー,エフアイシー,エフアイシー,5,*,*,52112736611607040,189585
FIC,14659,15432,406,名詞,固有名詞,一般,*,*,*,エフアイシー,FIC-FIC,FIC,エフアイシー,FIC,エフアイシー,固,*,*,*,*,*,*,固有名,エフアイシー,エフアイシー,エフアイシー,エフアイシー,5,*,*,52112736645161472,189585
FIC,14659,15432,406,名詞,固有名詞,一般,*,*,*,エフアイシー,FIC-FIC,FIC,エフアイシー,FIC,エフアイシー,固,*,*,*,*,*,*,固有名,エフアイシー,エフアイシー,エフアイシー,エフアイシー,5,*,*,52112736645161472,189585
FIZ,16209,17692,438,名詞,普通名詞,一般,*,*,*,エフアイゼット,FIZ,FIZ,エフアイゼット,FIZ,エフアイゼット,記号,*,*,*,*,*,*,体,エフアイゼット,エフアイゼット,エフアイゼット,エフアイゼット,5,C1,*,25108181277614592,91343
FIZ,16209,17692,438,名詞,普通名詞,一般,*,*,*,エフアイゼット,FIZ,FIZ,エフアイゼット,FIZ,エフアイゼット,記号,*,*,*,*,*,*,体,エフアイゼット,エフアイゼット,エフアイゼット,エフアイゼット,5,C1,*,25108181277614592,91343
FIT,16209,17692,438,名詞,普通名詞,一般,*,*,*,エフアイティー,FIT,FIT,エフアイティー,FIT,エフアイティー,記号,*,*,*,*,*,*,体,エフアイティー,エフアイティー,エフアイティー,エフアイティー,5,C1,*,25107906399707648,91342
FIT,16209,17692,438,名詞,普通名詞,一般,*,*,*,エフアイティー,FIT,FIT,エフアイティー,FIT,エフアイティー,記号,*,*,*,*,*,*,体,エフアイティー,エフアイティー,エフアイティー,エフアイティー,5,C1,*,25107906399707648,91342

사용자 보고서에 따르면 BSD grep 정규 표현식은 GNU grep보다 더 많은 항목을 제외합니다(약 8000 대 232). 불행히도 그들은 정확한 차이점을 보고하지 않으므로 어떤 종류의 항목이 다르게 처리될지 잘 모르겠습니다.


이 문제를 신고한 사용자에게 연락했는데 그 사용자가 제공한 정보는 다음과 같습니다.주요 요점BSD grep과 일치하는 항목 수입니다. 이 명령을 사용하여 항목을 찾았음을 나타냅니다( -v사용되지 않은 것 같습니다).

grep -Ev '^([A-Za-zA-Za-z]|[0-90-9]*),' lex.csv

얼핏 보면 구두점과 이모티콘(예 (´・ω・`): )이 있는 것처럼 보입니다. 이것이 왜 내 범위에 포함되는지는 확실하지 않습니다. 또한 잘못된 것처럼 보이는 다중 문자 알파 항목도 포함되어 있습니다.

관련 정보