CUI上で文字コードを変換するときにかなりお世話になるのがlvとnkfですね(自分は、ですけど
たまに、やり方を忘れるので、覚え書きを作りました、参考になれば
ちなみにCentOS 6.xのターミナル上で実行しているので、環境によっては使えないオプションもあるかも知れません
- インストール
yumの場合
yum install lv nkf
aptの場合
apt-get install lv nkf
- よく使うオプション
オプション一覧
-j(省略可能) : JISコード(ISO-2022-JP)を出力
-b : バッファリング出力を行う。(デフォルト)
-u : 出力時に、バッファリングしない
-e : EUCコードを出力
-s : Shift-JISコードを出力
-w : UTF-8コードを出力(BOM無し)
-w8 : UTF8 コードを出力する。
-w16 -w16B0 : UTF16 コードを出力する。 (Big Endian / BOM 無し)
-w16B : UTF16 コードを出力する。 (Big Endian / BOM 有り)
-w16L : UTF16 コードを出力する。 (Little Endian / BOM 有り)
-w16L0 : UTF16 コードを出力する。 (Little Endian / BOM 無し)
-mB : MIME base64 stream を解読する。ISO-2022-JP (B encode)
-mQ : MIME quoted stream を解読する。ISO-8859-1 (Q encode)
-mS : MIME のチェックを厳しくする (デフォルト)
-mN : MIME のチェックを緩くする。改行で切られた MIME なども解読する。
-m0 : MIME を解読しない。
-mS : 宣言の内容と、その後に続く encoded-text の整合性をチェックする。
-M : MIME に変換する。ヘッダ形式に変換する
-MB : MIME に変換する。base64 stream に変換する
-MQ : MIME に変換する。Quoted stream に変換する
-g : 自動判別の結果を表示
-x : 半角カナを維持する
-X : 半角カナを全角カナに変換する
-B : JISコード(エスケープ無し)
-B1 : エスケープを問わない
-B2 : 改行後強制的にASCIIにする
-f[m[-n]] : 一行 m 文字になるように、マージンを n として簡単な整形をおこなう。
-Z0 : Convert X0208 alphabet to ASCII.
-Z1 : JIS X 0208 和字間隔を ASCII space 一つに変換する。
-Z2 : JIS X 0208 和字間隔を ASCII space 二つに変換する。
-Z3 : >、<、”、&、を >、<、"、& に変換する。
-I : ISO-2022-JP 以外の漢字コードを〓に変換。
-i[@B] : JIS 漢字を指示するシーケンスを指定する。 (デフォルトは、ESC-$-B)
-o[BJH] : 1 バイト英数文字セットを指示するシーケンスを指定する。 (デフォルトは、ESC-(-B)
-r : ROT13/47 の変換をする。
-Lu : unix改行形式(LF)に変換
-Lw : windows改行形式(CRLF)に変換
-Lm : macintosh改行形式(CR)に変換
--overwrite : 引数のファイルに直接上書き
--version : バージョン情報を表示
他にも文字コードを指定したりする-icとかありますが、あまり使わないので割愛w
よく使う使い方
- SJISからUTF-8にする、ついでに改行もCR+LFからLFに
nkf -Lu -w --overwrite sample.txt
#パイプで使うなら
ls -al | nkf -Lu -w > sample.txt
- UTF-8 からSJISにする、ついでに改行もCR+LFにする
nkf -Lw -s --overwrite sample.txt
#パイプで使うなら
ls -al | nkf -Lw -s > sample.txt
- メールで使われるiso-2022-jpにする
nkf -j --overwrite sample.txt
#パイプで使うなら
ls -al | nkf -j > sample.txt