셸에서 ASCII가 아닌 문자를 어떻게 식별합니까?

셸에서 ASCII가 아닌 문자를 어떻게 식별합니까?

grep, awk, 등과 같은 명령줄 유틸리티를 사용하여 파일에서 ASCII가 아닌 모든 문자와 해당 문자가 나타나는 줄 번호를 인쇄하는 간단한 방법이 있습니까 perl?

텍스트 파일의 인코딩을 UTF-8에서 ASCII로 변경하고 싶지만 그렇게 하기 전에 파일 변환 루틴으로 인한 예기치 않은 문자 변경을 방지하기 위해 ASCII가 아닌 문자의 모든 인스턴스를 수동으로 바꾸고 싶습니다.

답변1

$ 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ť
是或不

답변2

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

... ASCII가 아닌 문자의 모든 인스턴스를 바꿉니다 ...

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

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

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

관련 정보