😀
nkfが意外と便利だった件
文字コードがアレな環境の中で色々文字コード変換やら改行コードがアレだったりするので
色々ゴニョゴニョしなくてはならなくてはいけなくなってその時に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でパイプするとできる
用途としては
- mysqlのLOAD INTO FILE構文などで使いたいとき等
- mysql LOAD INTO FILEは行末に改行文字を含まなくてはならないので
~/path/to/csv.csv
cd ~/path/to/csv.csv
# UTF-8 LFで出力して行末に改行コード
nkf csv.csv -Lu -w | wak '1' > csv.conv.csv
勉強になりました。
Discussion