2015年11月22日日曜日

nkf, trコマンドによる改行コード変換

MacのExcelでデータシートを作成し,CSVファイル,テキストファイル等で保存すると,改行コードが"CR"となり,gnuplotでは読み込めません.


改行コードの確認・変換にはvim,miや,Mac OS XのTextEditのような,改行コードを指定できるテキストエディタでも変更を行うことが可能です.
また,LibreOfficeでデータシート作成を行えば,改行コードが”CR”にはならず,このような問題は生じないようです.

以下に,"nfk"を用いてUnixで用いられる"LF"という文字コード(\n)に変換する方法をメモしておきます.
"nfk"がインストールされていない場合は,MacPortsを用いて nkf をインストールします(MacPortsのインストールはこちら).
そのうえで,ターミナルからMacPortsのアップデートを行った後,nkf をインストールします.
$ sudo port -v selfupdate
...(インストール状況が表示されます)...
$ sudo port install nkf
...(インストール状況が表示されます)...
$

改行コードを変換するには,ターミナルから以下のようにします.
$ nkf -Lu xxx.txt > yyy.txt
ここで,"xxx"は変換前のファイル名で,"yyy"は変換後のファイル名です.

"nfk"を用いずに"tr"コマンドを使っても改行コードを変換できます.

改行コード"CR"(Mac OS 9以前)から"LF"(Unix)に変換する場合
$ tr \\r \\n <xxx.txt >yyy.txt

改行コード"CR+LF"(Windows)から"LF"(Unix)に変換する場合
$ tr -d \\r <xxx.txt >yyy.txt

"nfk"を用いて文字コードを変換するには
$ nkf -w overwrite xxx.txt
とすると,nfkは自動的に使われている文字コードを判定して,出力の文字コードをUTF-8(-w で指定)して,入力したファイルを書き換え(-overwrite)てくれます.

0 件のコメント :

コメントを投稿