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]$