シェルから非ASCII文字をどのように識別できますか?


12

すべての非ASCII文字と、彼らのようなコマンドラインユーティリティを使用して、ファイル内で発生した行番号を印刷するための簡単な方法はありますgrepawkperl、など?

テキストファイルのエンコードをUTF-8からASCIIに変更したいのですが、変更する前に、非ASCII文字のすべてのインスタンスを手動で置き換えて、ファイル変換ルーチンによる予期しない文字の変更を回避したいと思います。

回答:


13
$ 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
ありがとう。perlスニペットは直接動作しますが、grepバージョンはGNU grep 2.16では動作しません。私はそれを機能させることができました:LC_ALL=C grep -n -P [$'\x80'-$'\xFF']最初のビットが照合をオフにする場所。
Joe Corneli 2014

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 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.