Linuxでファイルの改行コード/文字コードを確認・変換する方法

LinuxとWindows、またはMacとで各種データをやり取りする場合に問題になるのが、文字コードや改行コードの違いです。本記事では、Linuxのコマンドを利用して、文字コードや改行コードを確認・変換する方法をお伝えします。

目次

  1. 1Linuxでファイルの改行コードを確認・変換する方法
  2. WindowsなどOSごとに改行コードは異なる
  3. 使用されている改行コードを調べられるコマンド
  4. 改行コードを変換できるコマンド
  5. 2Linuxでファイルの文字コードを確認・変換する方法
  6. 使用されている文字コードを調べるコマンド
  7. 文字コードの変換コマンド
  8. 3Linuxの改行コードにメモ帳が対応!
  9. 改行コードを認識してテキストを表示
  10. サポートの詳細
  11. 4改行・文字コードをLinuxのものに変換しよう!

Linuxでファイルの改行コードを確認・変換する方法

PCで使われる文字コードや改行コードは、機種やOS、アプリによって異なります。そのため、Windowsで作成した文書をLinuxで開くと文字化けしたり、改行がおかしくなったりすることが少なくありません。もちろん逆の場合も同じことが起こります。そこで本記事では、データで使われている文字コードや改行コードを確認し、変換する方法をお教えします

そこでこの章では、まずはファイルの改行コードを確認する方法と、それを変換する方法をお伝えします

WindowsなどOSごとに改行コードは異なる

ファイル中の改行コードは、元々は電気式の通信用タイプライターであるテレタイプを接続して印刷する際の改行のコマンドでした。タイプライターでは、改行の際に、
 

  1. 活字をタイプするヘッド部分を行の先頭部分に戻す……Carriage Return。CRと略す。Carriageはタイプライターヘッドのこと
  2. 行1行分タイプ用紙を送る……Line Feed。LFと略す

というふたつの作業を行います。そのため、テレタイプに「CR+LF」のコードを送ると、テレタイプ上では改行が行われました。しかし、その後文字出力がディスプレイに移行したことで、改行コードは必ずしも「CR+LF」ではなくなります

OSごとの改行コード

現状、改行コードには以下の3つのパターンがあります。
 

  • CR+LF……Windows
  • LF…………UNIX・Linux・macOS
  • CR…………Mac OS Xになる前のMac

そのため、WindowsのファイルをLinuxでそのまま扱うと、改行部分が2重になったり、おかしな表示になったりします。

使用されている改行コードを調べられるコマンド

Linuxで改行コードを調べるには、nkfやcatなどいくつかのコマンドが利用できます。以下の項では、Linuxでそれぞれのコマンドを利用して「text.txt」の改行コードを調べる例を挙げます。

nkfコマンド

文字コードと改行コードを変換するLinuxのnkfコマンドで改行コードを調べる場合、「nkf -g text.txt」とすると、次の章で紹介する文字コード表示の後に、以下のように改行コードが表示されます。
 

  • UTF-8 (LF)………改行コードはLF
  • Shift_JIS (CR)……改行コードはCR+LF
  • UTF-8 (CR)………改行コードはCR

catコマンド

テキストファイルの中身を表示するLinuxのcatコマンドで改行コードを調べる場合、「cat -e text.txt」とすると、catでファイルの内容が表示される際に、行末に改行コードが記されます。catで-eオプションを使った場合、改行コードは以下のように表示されます。

$…………改行コードはLF
^M$……改行コードはCR+LF
^M………改行コードはCR

fileコマンド

ファイルの種類を調べるLinuxのfileコマンドで改行コードを調べる場合、「file text.txt」とすると以下のように表示されます。
 

  • text.txt: ASCII text……………………………………………改行コードはLF
  • text.txt: ASCII text, with CRLF line terminators……改行コードはCR+LF
  • text.txt: ASCII text, with CR line terminators………改行コードはCR

odコマンド

ダンプコードを表示するLinuxのodコマンドで改行コードを調べる場合、「od -c text.txt」とすると、ファイルの内容がASCIIコードで表示されますので、行末の改行コードが以下のように表示されます。

\n………改行コードはLF
\r\n……改行コードはCR+LF
\r………改行コードはCR

改行コードを変換できるコマンド

Linuxで改行コードを調べるだけでなく変換するには、やはりnkfなどのコマンドを利用できます。以下の項では、Linuxでそれぞれのコマンドを利用して、改行コードがWindowsのCR+LFの「text.txt」を、Linuxの改行コードLFの「text_lf.txt」に変換する例を挙げます。

nkfコマンド

文字コードと改行コードを変換するnkfコマンドで改行コードを変換する場合は、改行コードをLFに変更する「-d」オプションを使って、
 

  • nkf -d text.txt > text_lf.txt

とします。「nkf -g text_lf.txt」や「cat -e text_lf.txt」で変換結果を確認できます。なお、改行コードをCR+LFにしたい場合には「-c」オプションを使います

trコマンド

テキストファイルの文字を置換するtrコマンドで改行コードを変換する場合は、削除オプションの「-d」を使ってCR+LFのCR(\r)を削除します。
 

  • tr -d \\r < text.txt > telt_lf.txt

こちらも「nkf -g text_lf.txt」や「cat -e text_lf.txt」で変換結果を確認できます。

関連するまとめ

関連するキーワード

この記事のライター
julyten
PDAの頃から携帯機器やPC関係を扱ってきた旧きプロレス愛好家。

人気の記事

新着まとめ