改行コードの可視化と変換

一覧

改行コード 記号 10進数 16進数 OS vim等での表示
LF \n 10 0x0A UNIX,Linux,Mac OS X以降 $
CRLF \r\n 13 10 0x0D 0x0A Windows ^M$
CR \r 13 0x0D Mac OS Ⅸ以前 ^M

Windowsvimの場合

ファイルの文字コード確認方法

・現在設定している改行コード
 なお、fileformatはffと短縮可能

set fileformat?

・改行コードの可視化/非可視化(※1)

 :set list / :set nolist

※1
自身が利用しているプラグインが邪魔しているのか分からないが胡散臭い動きをしている。
具体的に観測できた事象が以下の2件である。
・改行コードがCRLFなのに、$で表示される
・set ff=unixにすると、^M$と表示される
但し、set ff=unixやset ff=dosで指定した後の保存は想定通りの改行コードである。
そのため、Windowsvimではlistを使わない様にしている。

変換方法

・以下のコマンドを実行後にファイルを保存すれば、統一化されて保存される。

"Windows→Linux
:set ff=unix
"Linux→Windows
:set ff=dos

・改行コードが混在などが要因で自動変換がうまくいかない場合は、以下で置換する

"Windows→Linux
:%s/\r//g

・c:\temp*配下のファイルを一括置換(※2)

:args c:\temp**\*
:argdo set ff=unix|update
:q

※2
argsはファイルを開く、argdoは開いているファイル群に対して操作するコマンドである。
そのため、ディレクトリ配下のファイルの容量次第ではあまり適した方法ではない。
c:\temp**としているのは、c:\temp/**という指定ができないため。
また、c:\temp\**\*とするとc:\temp直下のファイルが指定できない。

参考リンク

howpon.com

サクラエディタの場合

ファイルの文字コード確認方法

・ステータスバーにて確認が行え、改行コードも可視化されている。
 改行コードの記号の意味は、ステータスバーのとこを右クリックすれば確認可能である。

変換方法

・保存する時に変更するのが一番楽である。
・改行コードを文中で切り替えたい場合、一番下にあるステータスバーのとこに現在の改行コードが表示されているので、そこを右クリックし入力したい改行コードを選択する。
 以後、改行を行う際には指定した改行コードにて改行が行われる。

Linuxの場合

ファイルの文字コード確認方法

・色々方法があるが、odコマンドが一番確実
 そのため、moreやlessなどでパイプして確認すればよい。

od -c hoge.txt | more 
変換方法

sedだとうまくいかないケースがどうもあるっぽい。
 そのため、tr/perlコマンドでやるのが一番楽そう。

#Windows→Linux
tr -d \\r < windows.txt > linux.txt
#Linux→Windows
perl -p -e 's/\n/\r\n/' < linux.txt > windows.txt

改行コードの変換