質問: 初めまして、ナノポアです。 初めて質問させていただきます。 txtファイルの改行削除を試みているのですが、以下のコマンドを実行しても改行を削除できないファイルがあり、困っています。 ``` cat input.txt | tr -d '\n' > output.txt ``` エラーも特に出ておらず、新たに改行を入れると その部分のみ改行が削除されるので良くわかりません... 同様の経験、トラブルシュート経験がある方にぜひ相談に乗っていただきたいです。 よろしくお願いします。
回答: 歴史的事情というやつにより、改行コードには CR と LF と CR+LF の3種類があります。 `\r` は CR `\n` は LF `tr` はバイト単位で操作しますので `tr -d '\n'` は LF のみ削除することになります。一方で Windows / MacOS / Unix クロスプラットフォームなツールは3種類の改行をどれでも受け付けるものがあります。もともと Windows で作成した CR+LF 改行のファイルから LF のみ削除しても CR が残っているので、ツールは単独 CR を普通に改行として扱う可能性があります。 # cygwin を使っていると Unix 由来の LF 改行と MS-DOS 由来の CR+LF 改行が混在する羽目になって面倒が多かったり CR と LF の両方を削除するようにすると希望の動作をするはずです。