理工系研究者のための Mac OS X, Windows, Linux メモ
 
ホーム >> UNIX >> nkf
このエントリーをはてなブックマークに追加

nkfの使い方

  1. はじめに
  2. インストール
  3. 文字コードの変換
  4. 改行コードを変更する
  5. 入力ファイルの文字コードを指定する
  6. 文字コードを判定する
  7. 一括変換(cshellの場合)
更新日:2010.2.2

はじめに

nkfはテキストファイルの文字コードを変換したり,判別することのできるプログラム。 現在SourceForge.jpで管理されているので,ソースプログラムもそこから取得することができる。

インストール

SourceForge.jpからプログラムソースnkf-2.1.0.tar.gzを取得する。 インストール方法は,README.jpにかかれているが,基本的にはそのままコンパイルするだけでよい。

$ cd nkf-2.1.0/
$ make
$ sudo make install

文字コードの変換

nkfはもともとフィルターとして作られているためか,文字コードの変換結果は標準出力に出力される。

例えば,sample.txtというテキストファイルをSJISに変換する場合にはリダイレクトで出力ファイルを指定する必要がある。

$ nkf -s sample.txt > sjis.txt
出力ファイル名に対して入力ファイルと同じファイル名を指定してしまうと,ファイルの中身がなくなってしまうので注意する。

もしファイル名をそのままで文字コードだけ変換したい場合には,オプション--overwriteを付ける。

$ nkf -s --overwrite sample.txt

iso-2022-jp (JIS) に変換する

$ nkf -j sjis.txt > jis.txt

Shift JIS に変換する

$ nkf -s jis.txt > sjis.txt

EUCに変換する

$ nkf -e jis.txt > euc.txt

UTF-8に変換する

$ nkf -w jis.txt > euc.txt

改行コードを変更する

オプション -L[uwm] を付ける。 u(UNIX)はLF、w(Windows)はCRLF、m(Mac)はCRを意味する。

% nkf -Lu file.txt > newfile.txt

入力ファイルの文字コードを指定する

入力ファイルの文字コードは自動的に判別されますが,誤判別する場合には陽に指定することができます.オプション -J, -S, -E, -WはそれぞれJIS, Shift-JIS, EUC, UTF-8であることを示す。

文字コードを判定する

オプション-gを使うと文字コードの判別結果を出力する。

$ nkf -g sample.txt

一括変換(cshellの場合)

一括してファイルを変換したいとき、例えば "*.txt" というファイルを全て文字コードEUC、改行コードLFにする場合には、シェルスクリプトを用いて,

% foreach f ( *.txt )
foreach -> nkf -e -Lu $f > $f.tmp
foreach -> mv $f.tmp $f
foreach -> end
とする。

別のディレクトリに保存したいなら、

% cd some_dir/
% foreach f ( *.txt)
foreach -> nkf -e -Lu $f > $f.tmp
foreach -> mv $f.tmp ../other_dir/$f
foreach -> end
とする。