grep 명령에서 [:digit:]를 [0-9]로 변경할 수 있나요?

grep 명령에서 [:digit:]를 [0-9]로 변경할 수 있나요?

grep [0-9]같은 방식으로 작동 할까요 grep [:digit:]?

답변1

[0-9]아니아니요와 동일합니다 [:digit:].

[0-9]0부터 9까지의 숫자와 일치합니다.

[:digit:]0~9 및 비서구 언어(예: 동부 아랍어)의 숫자와 일치합니다.

답변2

[[:digit:]]내부의 설명을 변경할 수 있습니다 [0-9]. 이는 입력 인코딩에 따라 다릅니다. ASCII라면 문제가 없을 것 같습니다. 다른 인코딩의 경우 숫자가 연속되지 않거나 바이트 범위가 다를 수 있습니다. 다른 쓰기 시스템에서는 특수 숫자가 누락될 수도 있습니다.[:digit:][…]

답변3

정확하게 말하면 다음과 같은 경우 [0-9]에만 동일하다는 것이 보장됩니다 [:digit:].

  • 정규식 구문 분석기는 이를 지원합니다 [:digit:](즉, 그렇지 않은 경우 기존 구문 분석기는 [:digit:]아마도 여러분이 생각하는 대로 수행하지 않을 것입니다). 그리고:

  • 입력 문자 집합은 ASCII와 같은 문자 집합으로, 숫자만 문자 0이고 9서로 인접해 있습니다. (예를 들어) 유니코드(숫자가 숫자 0이외의 문자를 포함할 수 있는 경우 9) 또는 다른 8비트 문자 집합에서도 인접하지 않을 수 있습니다 0(9EBCDIC숫자 0- 9인접).

유니코드 예외를 보여주는 예여기. 보시다시피, "숫자, 숫자, 소수" 범주의 유니코드 문자 세트에는 [0-9]10개의 ASCII 숫자와 일치하는 것 이상이 포함되어 있습니다. 여기에는 아랍어, 인도인, 확장 아랍어, NGO 등이 포함됩니다.

유니코드 숫자에 대한 자세한 내용은 다음을 참조하세요.여기.

답변4

'[:숫자:]'이론적으로클러스터 번호를 함께 설정하기 위해 로컬 문자 집합에 의존하지 않는다는 장점이 있어 이식성이 더 뛰어납니다.

관련 예: "[:upper:]"와 "[AZ]" 사이에는 ASCII의 차이가 없지만기존 IBM과의 차이점EBCDIC여기서 "[AZ]"는 26자(EBCDIC 코드 193-233) 대신 41자로 확장되므로 EBCDIC "}\" 등과 일치합니다.

관련 정보