쉘에서 비 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.