まずはテスト用の元ファイルを作る。
$ echo "test" > test.txt
その後に元ファイルの改行コードを nkf で変更する。--unix で 0x0a、--mac で 0x0d、--windows で 0x0d0x0a になるはず。それぞれのオプションは各プラットフォームのデフォルト改行コードになっている。
$ nkf --unix test.txt > test.unix.txt $ nkf --mac test.txt > test.mac.txt $ nkf --windows test.txt > test.win.txt
正しく改行コードが変更されたかチェックするために od を使う。od はお手軽に使えるバイナリダンパー。-t で出力フォーマットを指定する。x1 の x は 16 進数、1 は入力バイト数。このオプション指定で、1 バイトづつ読み込んで、16 進数で出力するようになる。
$ od -t x1 test.unix.txt 0000000 74 65 73 74 0a 0000005 $ od -t x1 test.mac.txt 0000000 74 65 73 74 0d 0000005 $ od -t x1 test.win.txt 0000000 74 65 73 74 0d 0a 0000006
出力内容を確認すると、ASCII コードで t に相当する 0x74、e: 0x65、s: 0x73、t: 0x74 が 3 つのファイルで出力されていることがわかる。さらに test.unix.txt では 0x0a が、test.mac.txt では 0x0d が、test.win.txt では 0x0d0x0a が出力されている。つまり、各プラットフォームのデフォルト改行コードに変換されている。
できたファイルを改行コードの取り扱いをテストしたいエディタで読み込む。今回のターゲットは notepad と wordpad と notepad++。で、結果は以下。やっぱり notepad は簡易エディタだな。
0x0a | 0x0d | 0x0d0x0a | |
---|---|---|---|
notepad | NG | NG | OK |
wordpad | OK | OK | OK |
notepad++ | OK | OK | OK |