16진수 정규식만 허용됩니다.

16진수 정규식만 허용됩니다.

문자열의 16진수 표현만 인쇄하는 grep 명령을 사용하는 정규식을 원합니다.

이것은 내 명령입니다:

grep "0x[A-Fa-f0-9]{1,6}" test.txt

테스트.txt:

0x2a
0xF
0x1111
0x0ZZZ
0x4dz5

예상 출력:

0x2a
0xF
0x1111

출력: 비어 있음

어떻게 해야 하나요? 감사해요

답변1

{n,m}구문은 확장 정규식 세트의 일부입니다. 즉, -E플래그를 사용하여 grep에서 이를 활성화해야 함을 의미합니다. 전체 줄이 16진수 표현과 일치하도록 하려면 플래그를 추가 -x하거나 ^$앵커를 사용하세요.

grep -Ex '0x[A-Fa-f0-9]{1,6}'

또는

grep -E '^0x[A-Fa-f0-9]{1,6}$'

또한 문자가 실수로 확장되는 것을 방지하기 위해 주변 따옴표를 큰 따옴표에서 작은 따옴표로 변경했습니다 $.

Stack Exchange에서 더 많은 정규식 읽기:

관련 정보