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