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

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

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

目次

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

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

Linuxのイメージ

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

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

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

Windowsのイメージ

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

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

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

OSごとの改行コード

macOSのイメージ

現状、改行コードには以下の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コマンド

PCを扱う女性

テキストファイルの中身を表示する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コマンド

PCを扱う女性

ダンプコードを表示する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」で変換結果を確認できます。

sedコマンド

データを操作するイメージ

ストリームエディタのsedコマンドで改行コードを変換する場合は、「s」コマンドを使ってCR+LFのCR(\r)をnullに置換、つまり削除します。
 

  • sed 's/\r//g' text.txt > telt_lf.txt

こちらも「nkf -g text_lf.txt」や「cat -e text_lf.txt」で変換結果を確認できます。なお、逆にLinuxのファイルをWindows用に変換する場合には、行末にCR(\r)を付加すればいいので、「sed 's/$/\r/g' telt_lf.txt > text.txt」とします。

dos2unix・unix2dosコマンド

MS-DOSのユーザーガイド

改行コードを変換するコマンドには、そのものずばりdos2unix・unix2dosというコマンドもあります。「dos」はWindowsの前身であるMS-DOSを意味し、「2」は「to」を表します。つまり、dos2unixはWindows用ファイルの改行コードをLinux用に、unix2dosはLinux用ファイルの改行コードをWindows用に、それぞれ変換することを意味します。

いずれもコマンドの直後にファイル名を指定することで、元のファイルの内容が上書きされます

ThumbOutlookで受信したメールの文字化けの直し方!エンコードでの対処方法や原因を解説!
Outlookで受信したメールが文字化けしていたら、原因を把握して解消しましょう。文字化けに...

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

双眼鏡をのぞく人

LinuxでWindowsの日本語混じりのファイルを扱う場合には、文字コードも問題となります。一般に、
 

  • Windows……Shift JIS
  • Linux…………UTF-8

が使われているため、改行コードだけでなく文字コードも変換する必要があります

使用されている文字コードを調べるコマンド

コンピュータのコードのイメージ

文字コードを確認するには、改行コードの章でも紹介したnkfを使うのがベストです。nkfは、Network Kanji Filterの名の通り、日本で開発された文字コードの変換に特化したコマンドですので、この手の作業には最適なコマンドなのです。前章で紹介した「-g」オプションを使うと、以下のように文字コードが表示されます。
 

  • UTF-8…………文字コードはUTF-8
  • Shift_JIS……文字コードはShift-JIS
  • EUC-JP………文字コードはEUC-JP

文字コードの変換コマンド

nkfは文字コードを調べるだけでなく、変換にも利用できます。「-w」オプションを使えば、元のファイルの文字コードを自動判別してUTF-8に変換します。
 

  • nkf -w text.txt > text_utf8.txt

Shift-JISからUTF-8に変換

コード変換のイメージ

先に記したように、自動判別してくれるとはいうものの、判別が間違えてしまうこともあるので、元のファイルがShift-JISであると明確にわかっている時には、そのことを明示した「-S」オプションを併用するほうが間違いありません。
 

  • nkf -Sw text.txt > text_utf8.txt

EUC-JPからUTF-8に変換

同様に元のファイルがEUC-JPであると明確にわかっている時には、そのことを明示した「-E」オプションを併用したほうがいいでしょう。
 

  • nkf -Ew text.txt > text_utf8.txt

ThumbMacのメールが文字化けする時の対処法!送信・受信時のエンコードを確認!
Macの「メール」アプリで受信したメールが、文字化けして読めなかった経験はありませんか?今回...

Linuxの改行コードにメモ帳が対応!

メモ帳

ここまでは主にWindowsで作成したファイルをLinuxで開くときの問題について説明してきましたが、逆にLinuxで作成したファイルをLinuxで開く時にも、問題が発生します。Linuxで作成したファイルは、改行コードとしてLFしかないため、Windows上では改行されていないテキストとして、すべての文字が一行で表示されてしまいがちです。

改行コードを認識してテキストを表示

しかし、2018年の中頃からメモ帳では「LF」のみでも改行として認識するようになりました。これにより、Linuxで作成されたテキストファイルでも(英文であれば)メモ帳では問題なく改行されて表示されるようになったのです。

サポートの詳細

タイプライター

ただし、メモ帳で新規作成されたファイルは、相変わらず改行コードとして「CR+LF」を利用しますし、文字コードはShift-JISのままです。

この変更は、あくまでもLinuxで作成された英文テキストファイルの改行についてのみの対応であり、またWindowsのメモ帳で作成されたテキストファイルをLinuxで読む際には依然として文字コードと改行コードの変換が必要であることは忘れないでください。

ThumbChromeの文字化けを直す方法!PC/スマホで文字コードを変更しよう!
Google Chromeで文字化けが起きてしまった場合には、直す方法にはどんなものがあるの...

改行・文字コードをLinuxのものに変換しよう!

PCに向かう女性

WindowsやMac、あるいは古いUNIXのテキストファイルをLinuxで読む時には、文字コードや改行コードに問題が生じることが少なくありません。そんなときには、本記事で紹介したコマンド、特に「nkf -w」でUTF-8(LF)に変換してしまうのがベストです。なお稀に認識ミスがあるので元のファイルを上書きしないようにすることをおすすめします。

ThumbGoogle Chromeの文字コードの確認/変更方法!文字化けを直す方法も解説!
Chromeブラウザの文字コードの変更方法を紹介します。Chromeブラウザ上で文字化けが発...

関連するまとめ

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