[Home] / 教授でもできる... / 改行コード
Unixの上でsed, awk, Python, Perl などを使ってファイルを行ごとに扱うためには、各行は LF という文字コード(\n)で区切られていないといけない。しかし、他のシステムで作られたファイルは異なる改行コードを用いているため、一旦unix用の改行コードに変換する必要がある。
nkfを入れてあれば、Terminalから次のように打つだけ。
$ nkf -g foo.txt
例えば、foo.txtというファイルを調べたければ、Terminalを開いて次のようにする。
$ od -c foo.txt | less
表示される文字の中に混じっている\n や\r\nを見つけ、下の表と比べる。
システム | 改行コード | od -c での見え方 |
---|---|---|
unix | LF | \n |
Mac (特にOS 9以前) | CR | \r |
Windows | CR+LF | \r\n |
Mac OS Xの「テキストエディット」などは、unixと同じく、\n の改行コードで書き出す。
$ nkf -Lu foo.txt > unix.txt
$ nkf -Lw foo.txt > windows.txt
Unixのtrコマンドを使っても、改行コードを変換でる。
$ tr \\r \\n <mac.txt >unix.txt
$ tr -d \\r <windows.txt >unix.txt
$ perl -p -e 's/\n/\r\n/' <unix.txt >windows.txt