Linuxコマンド辞典 nkfコマンド(テキスト処理)
ファイルの文字コードを変換で広く使われている「nkf」コマンドの概要と使い方を記載しています。
RHEL Fedora CentOS Vine Deblan Plamo
概要・使用方法
指定したファイルを標準入力から読み取り、文字コードを変換して標準出力から出力します。文字コード変換のために入力の文字コードを自動認識する機能を持っています。
JISコード(ISO-2022-JP)、Shift-JIS、日本語EUC、UTF-8とUTF-16を自動判別できます。出力指定がない場合は、デフォルトでJIS(ISO-2022-JP)を出力します。特に指定しない場合は標準入力と標準出力を利用します。
UTF-8/UTF-16では、BOM(Byte Order Mark、バイト順マーク)を明示的に付けるオプションがあります。BOMとは符号化形式を示すために先頭につけるバイナリデータのことで、UTF-8では3Byte、UTF-16では2byte使われます。ツールによってはBOMがついてないと、UTF-8/UTF-16として利用できないものがあります。
nkfコマンドは、インストールされていないことが多いので、yum install nkfでインストールしましょう。
書式
$ nkf [オプション] [入力ファイル名]オプション
| -g –guess | 入力自動判別結果を出力 |
| -j | JIS文字コードを出力(デフォルト) |
| -e | EUC文字コードで出力 |
| -s | Shift-JIS文字コードで出力 |
| -w、-w8 | UTF-8文字コードで出力 |
| -w16 | UTF-16文字コードで出力 |
| -oc=文字コード | 出力文字コードを指定する |
| -r | ROT13/47暗号(文字列をすべて13,47ずらすシーザー暗号の一種)を利用する |
| -mQ | MIME Quotedでエンコードされた入力をデコードする |
| -mB | MIME Base64でエンコードされた入力をデコードする |
| -m0 | MIMEをデコードしない |
| -M | MIMEに変換する |
| -MB | MIME Basse64にエンコードする |
| -x | 半角かな(JIS X 0201片仮名)を全角かな(JIS X 0208)へ変換しない |
| -X | 半角かな(JIS X 0201片仮名)を全角かな(JIS X 0208)へ変換しない |
| -J | 入力文字コードをISO-2022-JPと仮定する |
| -E | 入力文字コードをEUC-JPと仮定する |
| -S | 入力文字コードをShift-JISと仮定する |
| -W、-W8 | 入力文字コードをUTF-8と仮定する |
| -W16 | 入力文字コードをUTF-16と仮定する |
| -ic=文字コード | 入力文字コードを指定する |
| -B | 入力コードをESCの無くなった壊れたISO-2022-JPと仮定する |
| -Lw | 改行コードをCR+LF(Windows改行コード)に変換する |
| -Lm | 改行コードをCR(Mac改行コード)に変換する |
| -Lu | 改行コードをLF(UNIX改行コード)に変換する |
文字コードを調べる
-gオプションを使用することで、ファイルの文字コードを調べることができます。
$ nkf -g ファイル名実行結果
[suna@engraku work]$ nkf -g shift-jis.txt
Shift_JIS
[suna@engraku work]$ 文字コードを変換する
Shift-JISからUTF-8に変換します。
$ nkf -w 変換元ファイル > 出力ファイル実行結果
[suna@engraku work]$ cat shift-jis.txt
abcdefg
[suna@engraku work]$ nkf -w shift-jis.txt > utf8.txt
[suna@engraku work]$ cat utf8.txt
abcdefg
あいうえお
[suna@engraku work]$ 文字コードと改行コードを変換する
Shift-JISからUTF-8に変換します。また、改行コードをCR+LFからLFに変換します。
$ nkf -w -Lu 変換元ファイル > 出力ファイル実行結果
[suna@engraku work]$ nkf -w -Lu shift-jis.txt > utf8.txt
[suna@engraku work]$ cat utf8.txt
abcdefg
あいうえお
[suna@engraku work]$