일련의 문자를 grep합니다(십진수 인코딩).

일련의 문자를 grep합니다(십진수 인코딩).

허용되는 문자 목록이 있습니다.

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI

이 문자는 다음으로 번역될 수 있습니다.ASCII 십진수 범위33-73

내가 원하는 구현은 입력 파일의 행을 구문 분석하고 이 범위 밖의 문자를 감지하고 해당 행을 반환합니다.

grep -E '[^33-73]{1,}'

where -E는 정규식 해석, ^목록에 없는 문자 일치, {1,}하나 이상의 일치 일치에 사용 [33-73]되며 원하는 문자 범위를 10진수 형식으로 표현하는 방법입니다. 이것을 어떻게 표현해야 할지 모르겠습니다. 로 어느 정도 설명할 수 있다 grep.

(정규식 자체에서 문자 목록을 정의할 수 있지만 grep -E문자를 이스케이프 처리하면 표현식을 읽기가 더 어려워집니다.)

에서 이를 달성할 수 있는 방법이 있나요 grep? (참고로, 작동시키려고 노력 중입니다 (BSD grep) 2.5.1-FreeBSD)

입력 예:

$ cat f1.txt
(ABC123abc_
ABC!123)-

예상 출력:

(ABC123abc_

답변1

이는 ASCII의 연속 문자이므로 간단히 다음을 수행할 수 있습니다.

$ grep '[^!-I]' file
(ABC123abc_

또는 다른 로캘을 사용하는 경우 더 안전합니다.

$ LC_ALL=C grep '[^!-I]' file
(ABC123abc_

관련 정보