grep regexp [AZ]는 숫자를 반환합니다.

grep regexp [AZ]는 숫자를 반환합니다.

내 파일의 내용은 a.txt다음과 같습니다.

1 (C##2)
2 (C##U)

그리고 grep그것에 사용

cat a.txt | grep '##[A-Z]*'    
1 (C##2)    
2 (C##U)

1 (C##2)이 grep 결과에 숫자가 나타나는 이유 는 무엇 입니까? 두 번째가 나타나기를 원합니다. 그래서 지정했습니다 [A-Z]. 왜 ..##2일치로 간주 됩니까 ?

답변1

[A-Z]*또는 여러 번 발생 합니다 [A-Z]. [A-Z]in이 0회 발생하므로 ##2행이 일치합니다. 하나 이상이 필요할 수도 있고( \{1,\}(또는 \+GNU grep또는 ERE와 호환 가능) 또는 ERE 지원 옵션 +사용 ) 와 일치하는 것처럼 과도 일치하거나 그 반대일 수도 있습니다.-E##[A-Z]##[A-Z]##[A-Z]+

또한 일치하는 항목은 C/ POSIXlocale 외에는 [A-Z]지정되지 않으며 일치하는 문자 목록(및 여러 문자로 구성된 데이터 정렬 요소도 가능)은 로케일 및 운영 체제에 따라 다릅니다. GNU 시스템에서는 일반적으로 라틴 알파벳 문자( Dž또는 같은 문자 포함 É), 대개 대문자이지만 때로는 영어 a-z 문자(적어도 Ubuntu 18.04의 태국어 로케일에서는)를 포함한 소문자일 수도 있습니다. GNU가 아닌 일부 시스템(예: Solaris)에서는 더 이국적인 목록을 얻을 수 있습니다. ABCDEFGHIJKLMNOPQRSTUVWXYZ만 일치시키려면 를 사용하십시오 [ABCDEFGHIJKLMNOPQRSTUVWXYZ].

관련 정보