awk - 메타 문자

awk - 메타 문자

괄호로 묶인 문자 집합으로 구성된 정규 표현식을 호출합니다.캐릭터 클래스;포함된 문자와 일치합니다. 예를 들어 , , 또는 [AEIOU]문자를 일치 시킵니다 .AEIOU

하이픈을 사용하여 문자 클래스 내의 문자 범위를 축약할 수 있습니다. 하이픈 바로 왼쪽에 있는 문자는 범위의 시작을 정의하고 바로 오른쪽에 있는 문자는 끝을 정의합니다. 따라서 [0-9]임의의 숫자와 일치하며 [a-zA-Z][0-9]문자 뒤에 숫자가 오는 것과 일치합니다. 왼쪽 및 오른쪽 피연산자가 없는 경우 문자 클래스의 하이픈은 자체를 나타내므로 문자 클래스 합계는 a 또는 a 와 [+-]일치합니다 . 문자 클래스는 하이픈이 포함된 단어와 일치합니다.[-+]+-[A-Za-z-]+

[+-]이들그리고 그리고 의 차이점은 무엇인가요 [-+]? 제가 보기에도 똑같은 일을 하고 있는 것 같습니다. 무엇을 해야 합니까 [A-Za-z-]+?

$ awk '/[Y-Zy-z-]/' countries
India     1267 746  -Asia
$ awk '/[Y-Zy-z-]+/' countries
India     1267 746  -Asia
U         8649 275  Asia
Canada    3852 25   North America
China     3705 1032 Asia
USA       3615 237  North America
India     1267 746  -Asia
Mexico    762  78   North America
France    211  55   Europe
Japan     144  120  Asia
England   94   56   Europe

아니면 내가 해봤어

awk '/[^-]/' countries

나는 어떤 결과도 기대하지 않습니다.

$ awk '/[^-]/ countries
U         8649 275  Asia
Canada    3852 25   North America
China     3705 1032 Asia
USA       3615 237  North America
India     1267 746  -Asia
Mexico    762  78   North America
France    211  55   Europe
Japan     144  120  Asia
England   94   56   Europe

답변1

텍스트에는 -괄호 안에 있는 표현식의 대시 와 일치하려면 [...]대시가 의 첫 번째 또는 마지막에 나타나야 합니다 (또는 대시가 아닌 단일 문자가 일치 하는 경우 [...]첫 번째 문자 바로 뒤에 나타나야 함 ).^[^-]

[+-]사이에는 차이가 없습니다 [-+]. 둘 다 a +또는 a와 일치합니다 -.

이 표현식은 에서 까지 여러 개의( 다음 으로 인해 0보다 큼 ) ASCII 문자와 [A-Za-z-]+일치합니다 .+[...]AZaz 그리고 대시. 에 표시된 대로 대시를 앞에 배치할 수도 있습니다 [-A-Za-z]+.

이 표현식에서 안쪽 두 개의 대시는 다음을 의미합니다.범위마지막 대시(또는 첫 번째 대시 [-A-Za-z]+)는 다음을 의미합니다.문자 그대로의 대시 문자.

after는 일치하도록 +표현식 을 수정합니다 . 그렇지 않은 경우 표현식은 선택적 대시가 있는 단어가 아닌 정확히 한 문자와 일치합니다.[...][...]+


두 번째 스크린샷은 [Y-Zy-z-]일치하는 [Y-Zy-z-]+일부 데이터를 보여줍니다.

두 모드 모두에서 동일한 결과를 얻습니다. 이는 set 에서 하나 이상의 문자를 포함하는 유일한 줄이기 때문입니다 YZyz-. 일치하는 문자는 -하위 문자열의 문자 입니다 -Asia.

그런 다음 이 일치를 사용하려고 합니다 [^-].모두왜냐하면 모든 행에는 -.

관련 정보