0

nkf コマンド まとめ

ネットワークでメールやニュースの読み書きをするために作られた、漢字コードの変換フィルタです。
業務で必要に迫られることが何気に多いnkfかと思いますので、まとめました。

$ nkf オプション [入力ファイル名] [> 出力ファイル名]

入力ファイル、出力ファイルはデフォルトではそれぞれ標準入力、標準出力になっています。

nkf -g
ファイルに使われている文字コードのチェック

$ nkf -g TARGET.FILE
ISO-2022-JP (LF)

ファイルの文字コードをUTF-8を指定して出力する

$ nkf -w TARGET.FILE

ファイルの文字コードをUTF-8へ変換し、上書きする

$ nkf -w --overwrite TARGET.FILE
# 確認
$ nkf -g TARGET.FILE
UTF-8 (LF)  ←OK!!!

他にも
-sオプションだとShift_JISに変換
-eオプションだとEUCコードに変換

■nkfの出力として指定できる文字コードのオプション一覧

-j              JISコードを出力する。
-e              EUCコードを出力する。
-s              シフトJISコードを出力する。
-w -w8[0] -w16[BL][0]  Unicode を出力する。
-w -w80           UTF8コードを出力する。(BOM無し)
-w8             UTF8コードを出力する。
-w16 -w16B0        UTF16コードを出力する。(Big Endian / BOM無し)
-w16B           UTF16コードを出力する。(Big Endian / BOM有り)
-w16L           UTF16コードを出力す る。 (Little  Endian / BOM有り)
-w16L0          UTF16コードを出力する。(Little Endian / BOM無し)

–overwriteオプション ← ← ← 注意:- は2つです。

元のファイルを変換したもので置き換える

注意:文字コードを変換する場合

$ nkf -w example.csv > example.csv

のようにすると、ファイルの中身が全て消えてしまいます。

文字コード、改行コードをコンバートした後、ファイルを更新したい場合

■上書きで書き出す場合
nkf -w –overwrite TARGET.FILE

■別名で書き出す場合
出力ファイルには入力ファイルと違うものを指定する
nkf -w –overwrite TARGET.FILE > ANOTHER_NAME_TARGET.FILE

●下記2つの課題で整理しましょう。

①現ディレクトリ内のファイル全ての文字コードを表示

$ nkf -g *
example.csv: Shift_JIS
example2.csv: UTF-8
test.txt: Shift_JIS

②現ディレクトリ内の.txtファイル全てを、文字コード: Shift_JIS、改行: windows形式(CRLF)に変換

$ nkf -s Lw --overwrite *.txt

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です