노트

노트

내 글꼴이 지원하지 않는 문자를 TeX 파일에서 반복적으로 검색하려면 일반적으로 깨지지 않는 공백과 너비가 0인 공백을 검색하는 것부터 시작합니다. 이는 터미널 명령줄에서 생성하기 어렵기 때문에 UTF-8 16진수 표현을 사용합니다.

env LANG=C grep -obUaP "\xc2\xa0" $(find -name '*.tex')
env LANG=C grep -obUaP "\xe2\x80\x8b" $(find -name '*.tex')

위에 표시된 LANG대로 환경 변수를 명시적으로 설정해야 하는 이유는 무엇입니까 ?Cenv LANG=C


노트

-Uand 를 모두 사용하는 것이 -a잘못된 것처럼 보일 수도 있지만이 버전의 매뉴얼지적

유형이 "바이너리"인 경우 grep은 -z(--null-data) 옵션이 없어도 텍스트가 아닌 바이트를 줄 종결자로 처리할 수 있습니다.

-a줄 종결자를 강제로 줄 종결자로 설정하십시오(너무 명확하지는 않음).

http://www.gnu.org/software/grep/manual/html_node/File-and-Directory-Selection.html

답변1

내 grep 매뉴얼 버전에서는 이 내용을 다루지 않지만 grep 3.0에는 이 주제에 대한 자세한 내용이 있습니다.

경고: -a (--binary-files=text) 옵션은 바이너리 쓰레기를 출력할 수 있습니다. 이는 출력이 터미널에 대한 것이고 터미널 드라이버가 그 중 일부를 명령으로 해석하는 경우 심각한 부작용이 있을 수 있습니다. 반면, 텍스트 인코딩을 알 수 없는 파일을 읽을 때는 직접 표시하기에 안전하지 않더라도 더 많은 일치 항목을 찾을 수 있도록 -a를 사용하거나 환경에서 'LC_ALL='C'를 설정하는 것이 도움이 될 수 있습니다.

이 답변에서 :https://unix.stackexchange.com/a/87763/33386

C 언어 환경에서 문자는 단일 바이트이고 문자 세트는 ASCII입니다 [...]

이것이 알 수 없는 텍스트 파일을 스캔할 때 문자를 표시하는 데 도움이 되는 이유일 것입니다.ASCII 문자 집합을 강제로 사용합니다.

관련 정보