😀

nkfが意外と便利だった件

2022/11/28に公開

文字コードがアレな環境の中で色々文字コード変換やら改行コードがアレだったりするので
色々ゴニョゴニョしなくてはならなくてはいけなくなってその時にnkfで色々ゴニョゴニョした時のメモ

環境

  • CentOS6.4

インストール手順

日本語環境なら標準でOSに入っています。(多分)

参考にしたサイト

基本コマンド

~/
nkf [オプション] [変換元ファイル]

よく使うオプション

文字コードと改行コードをメインに

文字コード変換系

もっと色々ありますがよく使うものだけにしておく

  • -e 変換結果をEUC-JPで出力する
  • -j 変換結果をISO-2022-JPで出力する
  • -s 変換結果をShift-JISで出力する
  • -w 変換結果をUTF-8で出力する

改行コード変換系

  • -L(文字コード)
  • -Lu LFで出力
  • -Lw CR/LFで出力
  • -Lm CRで出力

元ファイルを変換したい場合

  • --overwrite
  • nkf hoge.file > hoge.conv.file でもOK

現在のファイルの文字コードを確認したい

カレントディレクトリ全ての文字コードと改行コードの確認

~/path/to/dir
nkf -g *
# ファイル単位でも可能
nkf -g hoge.file

ShiftJIsでCR/LFのCSVファイルをUTF-8でLFに変換したい

よくあるケース

~/path/to/csv.csv
cd ~/path/to/csv.csv
# UTF-8 LFで出力される
nkf csv.csv -Lu -w

最後に改行を含んだ形で出力させたい(行末に改行コードがないファイルのみ行末に改行コードを挿入する)

awkでパイプするとできる

用途としては

~/path/to/csv.csv
cd ~/path/to/csv.csv
# UTF-8 LFで出力して行末に改行コード
nkf csv.csv -Lu -w | wak '1' > csv.conv.csv

勉強になりました。

Discussion