Windows で作成したファイルの改行コードは CR+LFUNIX 系の改行コードは、LFよって、^M 文字問題は、Windows の CR コードによるもので、Windows で作成したテキストファイルを vi で開くと、転送方式によっては、すべての行末に ^M が表示されるようになります。 Linux のファイルを Windows へ転送するとどうなる? 逆に、Linux 上で作成したファイルの場合、改行コードは、LF だけなので、このファイルを Windows 環境で開くと CR コードが存在しないため、全て 1行に見えます。 (テキストエディタによっては折り返し表示してくれたりしますが、改行されてるように見えてるだけで結果的には 1行になります)