nkfで改行コードを変換する方法

提供: Linux入門
2017年12月16日 (土) 13:59時点におけるDaemon (トーク | 投稿記録)による版 (ページの作成:「Windows, Mac, Linux で '''改行コード''' が異なり、ファイルを開くと、変な文字が見えたり、全部が1行になっていたり、そういう...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

Windows, Mac, Linux で 改行コード が異なり、ファイルを開くと、変な文字が見えたり、全部が1行になっていたり、そういう場面に遭遇したことがある方もいらっしゃると思います。改行コードは簡単に変換できます。変換方法についてまとめました。

読み方

nkf
えぬけーえふ

概要

Windows や Unix で 改行コード が異なっているため、メールに添付されてきたファイル、ウェブでダウンロードしたファイルなどのテキストファイルをエディタ等で開いた時に、表示が崩れているように見えたり、よくわからない文字が表示されていることがあります。例えば、vim などのエディタでファイルを開いたときに、 ^M といった文字が表示され、ファイルの中身が1行に見えてしまうことがあります。

環境によって改行コードが異なるため、改行コードが理解できるツールでファイルを表示するか、改行コードを変換して対応する、といったことが必要になってきます。

文字コード

まず、文字コードの違いを明らかにしましょう。OSによって、文字コードが異なります。

改行コード
OS 改行コード エスケープシーケンス アスキーコード(16進)
Unix LF \n 0A
Mac OSX LF \n 0A
Mac OS9 CR \r 0D
Windows CR+LF \r\n 0D 0A

nkf を用いた改行コードの変換

nkf は、改行コードを変換することができます。

-Lu
Unix の改行コード(LF)に変換する
-Lw
Windows の改行コード(CR LF)に変換する
-Lm
Mac の改行コード(CR)に変換する

Unix の改行コードに変換する例です。

nkf -Lu foo.txt > bar.txt

nkf は、指定されたファイルを上書きすることもできます。

nkf -Lu --overwrite foo.txt

備考

この記事では、 nkf を例に挙げましたが、 tr コマンドや perl を使用して変換することもできます。

vim ユーザに向けて

vim でも変換は可能ですが、大きなファイルを vim で編集する場合、 vim が異様に動作が重くなって、操作するのが難しい場合もあるため、大きなファイルを扱わなければならない場合には、コマンドを利用した変換をお勧めします。

関連項目




スポンサーリンク