如何從 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

相關內容