アメリエフの技術ブログ

Amelieff Staff Blog

どんな改行コードでも・前

弊社のトレーニングやNGSハンズオン講習会などでPerlやPythonに触れた方は「『¥n』で行の末尾を示す」と聞いたことがあると思います。
『¥n』はLine Feed、LFとも呼び、LinuxまたはMac OS Xで使われる改行コードです。改行コードはOSの種類やバージョン、ソフトごとに種類が異なります。

Linux、Mac OS X… ¥n
Windows… ¥r¥n
OS Xより前のMac… ¥r

『¥r』はCarriage Return、CRと呼びます。
ファイルにどんな改行コードが含まれているかは「od -c」コマンドなどで確認できます。(過去の記事を参照

バイオインフォの解析はLinux上で行われることが多いと思います。しかし、普段の作業はMacやWindows上で行っており、そちらで作製したファイルをLinux上で扱いたいときなど、改行コードが混在するケースも多々あると思います(テキストエディタによっては、ファイル保存時の改行コードを指定することができるものもあります)。

以下のコマンドで、ファイルの改行コードをすべて「¥n」に変換することができます。

$ cat oldfile.txt | tr -s '¥r' > newfile.txt



そのほかに、自分で組んだPerl/Pythonスクリプト内で、改行コードを処理するようにしてもいいです。
PerlやPythonのスクリプト内部で「ファイルを一行ずつ読み込んで処理する」ときは、基本的に処理前に行末から改行コードを削除します。スクリプト内部で、どのような改行コードがきても対応できるように処理をしておくと、上の tr コマンドを実行する手間を減らすことができ、トラブルが少なくなると思います。

次回にPerlとPythonの例を示します。