(12)【nkf】シェルスクリプトコマンド活用紹介

nkfコマンド

  • 文字コードと改行コードを変換する
  • 文字コードを判定する
  • 文字コードを変換してファイルを書き換える
  • CentOS 7にnkfをインストールするには?

nkfコマンド概要

 「nkf」は「Network Kanji Filter」の略で、LinuxとWindowsなど、異なるOS間でテキストデータを交換する際に問題となる文字コードと改行コードを変換するためのコマンドです。

nkfコマンドの書式

nkf [オプション] [ファイル]
nkf [オプション] –overwrite ファイル

nkfコマンドの主なオプション

nkfにはオプションはありません。なお、オプション文字列の先頭に「:」記号を入れるかどうかによって、エラーメッセージ表示の有無を変更できます。

オプション 意味
-j(入力は J) JISコードを出力する
-e(入力は E) EUCコードを出力する
-s(入力は S) シフトJISコードを出力する
-w(入力は W) UTF-8コードを出力する(BOMなし)
-Lu 改行をLFにする(UNIX系)
-g 自動判別の結果を出力する
–overwrite ファイルを変換して上書きする
ヒント
UTF-8に変換する場合は $ nkf -wLu となります。
このオプションの意味は、改行コードをUNIX系のLFに変換してUTF-8で出力、です。
ヒント
一覧のオプションは一部です。 $ man nkf などで、nkfの使い方を確認してください。

nkfコマンド詳細説明

文字コードと改行コードを変換する

kfは「nkf ファイル名」で指定したファイル、または標準入力から受け取った内容を変換して、標準出力に書き出します。

Linux環境で扱いやすいように、文字コードを「UTF-8」(-wオプション)、改行コードを「LF」(-Luオプション)に変換するには、リダイレクトするか、「nkf -wLu 元ファイル > 保存ファイル名」のように指定します。なお、入力側の文字コードは自動で判定されます。

改行コードはUNIX系のLFで、UTF-8で変換出力

$ cat sjisFile.txt | nkf -wLu > 保存ファイル名.txt

文字コードを判定する

 「-g(–guess)」オプションを付けると、使用されている文字コードと改行コードの判定結果を表示することができます。

得体のしれないファイルを調査する

$ cat sjisFile.txt | nkf -g
sjisFile.txt: UTF-8 (LF)

文字コードを変換してファイルを書き換える

 「–overwrite」オプションでは、指定したファイルの文字コードを変換して、直接書き換えることができます。

文字コードを変換してファイルを書き換える

$ cat sjisFile.txt | nkf -wLu --overwrite
ヒント
–overwrite オプションで元のファイルを上書きするのは一見便利なオプションに見えますが、別ファイルに出力して、元のファイルは極力残すようにしておくべきだと思います。僕は。

CentOS 7にnkfをインストールするには?

rpmでインストール

$ yum localinstall http://mirror.centos.org/centos/6/os/x86_64/Packages/nkf-2.0.8b-6.2.el6.x86_64.rpm

ソースからインストール

$ 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
ヒント
rpmやyumでインストールする場合と、ソースからインストールする場合、いずれも好みです。人それぞれのやり方や考え方でいいと思います。いずれ使い分けができるようになると思います。今はうまく行ったほうで頑張ってください。

書籍の紹介

(13)【tr】シェルスクリプトコマンド活用紹介

(13)【tr】シェルスクリプトコマンド活用紹介

(11)【getopts】シェルスクリプトコマンド活用紹介

(11)【getopts】シェルスクリプトコマンド活用紹介