我如何从 shell 中识别非 ASCII 字符?

我如何从 shell 中识别非 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

相关内容