【 nkf 】コマンド――文字コードと改行コードを変換する:Linux基本コマンドTips(51)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「nkf」コマンドです。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。文字コードや改行コードを変換するための「nkf」コマンドを解説します。
目次
nkfコマンドの概要 | 書式 | オプション一覧
実行例
- 文字コードと改行コードを変換する
- 文字コードを判定する
- 文字コードを変換してファイルを書き換える
- [補足1]CentOS 7にnkfをインストールするには?
- [補足2]nkfをコンパイルしてインストールするには?
nkfコマンドとは?
「nkf」は「Network Kanji Filter」の略で、LinuxとWindowsなど、異なるOS間でテキストデータを交換する際に問題となる文字コードと改行コードを変換するためのコマンドです。
nkfコマンドの主なオプション
nkfコマンドの主なオプションは次の通りです。
短いオプション | 長いオプション | 意味 |
---|---|---|
-j | --jis | JISコードを出力する(デフォルト) |
-e | --euc | EUCコードを出力する |
-s | --sjis | シフトJISコードを出力する |
-w,-w80 | UTF-8コードを出力する(BOMなし) | |
-w8 | UTF-8コードを出力する(BOM有り) | |
-w16,-w16B0 | UTF-16コードを出力する(ビッグエンディアン/BOMなし) | |
-w16B | UTF-16コードを出力する(ビッグエンディアン/BOM有り) | |
-w16L | UTF-16コードを出力する(リトルエンディアン/BOM有り) | |
-w16L0 | UTF-16コードを出力する(リトルエンディアン/BOMなし) | |
-I | ISO-2022-JP以外の漢字コードを「〓(げた記号)」に変換する | |
--oc 文字コード | 出力する文字コードを「EUC-JP」や「UTF-8」などで指定する | |
--overwrite | ファイルを変換して上書きする |
短いオプション | 長いオプション | 意味 |
---|---|---|
-J | 入力をISO-2022-JPと仮定して処理を行う | |
-E | 入力を日本語EUCと仮定して処理を行う | |
-S | 入力をシフトJISと仮定して処理を行う。半角カナ(JIS X 0201 片仮名)も 受け入れる |
|
-W,-W8 | 入力をUTF-8と仮定して処理を行う | |
-W16 | 入力をUTF-16(リトルエンディアン)と仮定して処理を行う | |
-W16B | 入力をUTF-16(ビッグエンディアン)と仮定して処理を行う | |
-g | --guess | 自動判別の結果を出力する |
--ic 文字コード | 入力する文字コードを「EUC-JP」や「UTF-8」などで指定する |
短いオプション | 長いオプション | 意味 |
---|---|---|
-d,-Lu | 改行をLFにする(UNIX系) | |
-c,-Lw | 改行をCRLFにする(Windows系) | |
-Lm | 改行をCRにする(OS Xより前のmac OS系) |
短いオプション | 長いオプション | 意味 |
---|---|---|
-m | MIMEを解読する(デフォルト、「-mS」相当) | |
-mB | MIME base64 streamを解読する | |
-mQ | MIME Quoted streamを解読する | |
-mS | MIMEのチェックを厳しくする(「-mBS」のような指定が可能) | |
-mN | MIMEのチェックを緩くする(「-mBN」のような指定が可能) | |
-m0 | MIMEを解読しない | |
-M | --mime | MIMEに変換する(JISに変換してからbase64ヘッダ形式に変換する) |
-MB | --base64 | MIME base64 streamに変換する |
-MQ | MIME Quoted streamに変換する |
短いオプション | 長いオプション | 意味 |
---|---|---|
-X | 半角カナ(JIS X 0201 片仮名)を全角カナ(JIS X 0208 片仮名)へ変換する | |
-x | 半角カナを保存する(通常は全角カナへの変換を行う) | |
-Z,-Z0 | 全角を半角にする(JIS X 0208英数字と若干の記号をASCIIに変換する)。「-Z1」はJIS X 0208 和字間隔をASCIIスペース1つに変換。「-Z2」はASCIIスペース2つに変換。「-Z3」は「>」「<」「”」「&」を、それぞれ「>」「<」「"」「&」に変換する |
短いオプション | 長いオプション | 意味 |
---|---|---|
-f 文字数 | 1行の文字数を指定して簡単な整形を行う(「-f」のみの場合は60桁) | |
--hiragana | ひらがなで出力する | |
--katakana | カタカナで出力する |
文字コードと改行コードを変換する
nkfは「nkf ファイル名」で指定したファイル、または標準入力から受け取った内容を変換して、標準出力に書き出します。デフォルトの出力はJISコードで、改行コードは変換されません。
Linux環境で扱いやすいように、文字コードを「UTF-8」(-wオプション)、改行コードを「LF」(-dオプション)に変換するには、リダイレクトするか、「nkf -wd 元ファイル > 保存ファイル名」のように指定します。なお、入力側の文字コードは自動で判定されます。
コマンド実行例
cat 元ファイル | nkf -wd > 保存ファイル名
nkf -wd 元ファイル > 保存ファイル名
(元ファイルの文字コードをUTF-8、改行コードをLFに変換して保存する)(画面1)
画面1 最初は「sampletext.txt」がUTF-8ではないため文字化けしている。nkfの「-w」オプションを通すことでUTF-8に変換され、文字化けしなくなる。同じオプションで変換後にリダイレクトして「utf8sampletext.txt」に保存した
文字コードを判定する
「-g(--guess)」オプションを付けると、使用されている文字コードと改行コードの判定結果を表示することができます。
【筆者注】nkfのプロジェクトページ(https://osdn.jp/projects/nkf/)で配布されている最新版(nkf 2.1.4)の場合、「-g」は文字コードのみ、「--guess」は文字コードと改行コードが表示されます。CentOS 6版(nkf 2.0.8)では、「-g」「--guess」ともに文字コードを改行コードが表示されますが、改行コードの表示が不正確なことがあるようです。筆者の試した限りでは、変換には問題ありませんでした。
コマンド実行例
nkf --guess ファイル
(使用されている文字コードと改行コードを表示する)(画面2)
文字コードを変換してファイルを書き換える
「--overwrite」オプションでは、指定したファイルの文字コードを変換して、直接書き換えることができます。
コマンド実行例
nkf -wd --overwrite ファイル
(-wオプションで文字コードをUTF-8に、-dで改行コードをLFに変換して、--overwrite
で上書き保存する)(画面3)
[補足1]CentOS 7にnkfをインストールするには?
nkfはCentOS 6までは収録されていましたが、CentOS 7には入っていません。CentOS 6用のパッケージがそのまま使用できるので、「yum localinstall」(本連載第50回参照)でRPMパッケージをインストールするとよいでしょう。
コマンド実行例
yum localinstall http://mirror.centos.org/centos/6/os/x86_64/Packages/nkf-2.0.8b-6.2.el6.x86_64.rpm
(nkfのパッケージファイルをyumコマンドでインストールする)
[補足2]nkfをコンパイルしてインストールするには?
nkfをコンパイルしてインストールするには、nkfのプロジェクトページからソースファイルのアーカイブをダウンロードして、展開します。
wget https://osdn.jp/dl/nkf/nkf-2.1.4.tar.gz tar -xzvf nkf-2.1.4.tar.gz cd nkf-2.1.4/ make sudo make install
「configure」はないので、展開したソースファイルは「make」コマンドでコンパイルし、「make install」でインストールしてください。マニュアルと実行ファイル(「/usr/local/bin/nkf」)がインストールされます。
筆者紹介
西村 めぐみ(にしむら めぐみ)
PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.