쉘에서 비 ASCII 문자를 식별하려면 어떻게해야합니까?


13

모든 비 ASCII 문자 그들이 같은 명령 줄 유틸리티를 사용하여 파일에서 발생되는 줄 번호를 인쇄하는 간단한 방법이 grep, awk, perl, 등?

텍스트 파일의 인코딩을 UTF-8에서 ASCII로 변경하고 싶지만 그렇게하기 전에 파일 변환 루틴에 의해 예기치 않은 문자 변경이 발생하지 않도록 ASCII가 아닌 문자의 모든 인스턴스를 수동으로 바꾸십시오.

답변:


14
$ perl -ne 'print "$. $_" if m/[\x80-\xFF]/'  utf8.txt
2 Pour être ou ne pas être
4 Byť či nebyť
5 是或不

또는

$ grep -n -P '[\x80-\xFF]' utf8.txt
2:Pour être ou ne pas être
4:Byť či nebyť
5:是或不

utf8.txt는

$ cat utf8.txt
To be or not to be.
Pour être ou ne pas être
Om of niet zijn
Byť či nebyť
是或不

1
감사. 펄 스 니펫은 직접 작동하지만 grep 버전은 GNU grep 2.16에서 작동하지 않습니다. LC_ALL=C grep -n -P [$'\x80'-$'\xFF']첫 번째 비트가 데이터 정렬을 끄는을 통해 작동시킬 수있었습니다 .
— Joe Corneli

4

텍스트 파일의 인코딩을 UTF-8에서 ASCII로 변경하고 싶습니다 ...

... 비 ASCII 문자의 모든 인스턴스 교체 ...

그런 다음 변환 도구에 지시하십시오.

$ iconv -c -f UTF-8 -t ASCII <<< 'Look at 私.'
Look at .

$ iconv -c -f UTF-8 -t ASCII//translit <<< 'áēìöų'
aeiou

그는 수동으로 교체를하고 싶다고 말했다. 아마도 가장 적절한 대체는 상황에 따라 다릅니다.
— mark4o
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.