本日も乙

ただの自己満足な備忘録。

nkfコマンドのインストール

本日はnkfコマンドのインストールです。 京都の夏は暑いです。 昨日の豪雨はすごかったです。 http://matome.naver.jp/odai/2137568482832704101

ファイルの文字コードを確認したいときや変換(エンコード)したい場合に、nkf (Network Kanji Filter)コマンドがあります。 デフォルトでインストールされていなかったので、別途インストールする必要があります。 インストールは yum か、ソースから行います。

yumでインストール

$ sudo yum install nkf

インストールは簡単ですが、バージョンが古い場合があるので最新バージョンをインストールしたい場合は、ソースからコンパイルしてインストールします。

ソースからインストール

ソースのダウンロード

http://sourceforge.jp/projects/nkf/ からファイルをダウンロードします。 なぜか、wgetコマンドだと上手くダウンロードできなかったので調査中です。 今回はnkf-2.1.2.tar.gz をダウンロードしました。

(2013年9月5日追記) 次のコマンドでダウンロードできます。

$ wget 'http://sourceforge.jp/frs/redir.php?m=osdn&f=%2Fnkf%2F53171%2Fnkf-2.1.2.tar.gz'

URLを「''」で囲っているのがポイントです。 (追記終了)

インストール

解凍してmake コマンドでコンパイルするのはApacheMySQL, PHPなどと同じです。

$ tar zxvf nkf-2.1.2.tar.gz
$ cd nkf-2.1.2.tar.gz
$ make
$ sudo make install

インストールできたか確認

$ nkf --version
Network Kanji Filter Version 2.1.2 (2011-09-08)
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).
Copyright (C) 1996-2011, The nkf Project.

コマンドの使い方

オプションはこちらが詳しいです。

僕がよく使うオプション

  • -g (--guess) ・・・ ファイルの文字コードを判別
  • -w ・・・ UTF-8 に変換
  • -s ・・・ Shift-JIS に変換
  • -e ・・・ EUC-JP に変換
  • -Lu ・・・ 改行コードを Unix(LF)に変換
  • -Lw ・・・ 改行コードを Windows(CRLF)に変換
  • -Lm ・・・ 改行コードを Max(CR)に変換
  • -u ・・・ 出力時にバッファリングしない
  • --overwrite ・・・ ファイルを指定した文字コードに上書き

実際の使い方 ホームディレクトリにtest.txt (UTF-8)を作成し、以下を記述します。

あいうえお
サーバーの文字コードを確認
$ echo $LANG
ja_JP.UTF-8

test.txt の文字コードを判別する
LF は改行コードです。
$ nkf -g test.txt
UTF-8 (LF)

改行コードをCRに変換したものをtest-cr.txtに出力する
$ nkf -w -Lm test.txt > test-cr.txt
$ nkf -g test-cr.txt
UTF-8 (CR)

Shift-JISにエンコードしたものをtest-sjis.txtに出力する
$ nkf -s test.txt > test-sjis.txt
$ nkf -g test-sjis.txt
Shift_JIS (LF)

test.txt をEUC-JPにエンコードする
$ nkf -e --overwrite test.txt
$ nkf -g test.txt
EUC-JP

UTF-8 以外にエンコードしたファイルをUTF-8 で less コマンドで確認する
$ cat test.txt| nkf -u -w | less

最後に

nkf コマンドをインストールして文字コードエンコードができました。 複数の文字コードが散漫しているシステムで重宝すると思います。 でも、いつかはすべてUTF-8で管理できれば、使う機会が減ってくるのかもしれませんね。(遠い目)