

初めまして、ナノポアです。  
初めて質問させていただきます。

txtファイルの改行削除を試みているのですが、以下のコマンドを実行しても改行を削除できないファイルがあり、困っています。

[code]

    cat input.txt | tr -d '\n' > output.txt
    
[/code]

エラーも特に出ておらず、新たに改行を入れると  
その部分のみ改行が削除されるので良くわかりません...

同様の経験、トラブルシュート経験がある方にぜひ相談に乗っていただきたいです。  
よろしくお願いします。


CC BY-SA 4.0
2020-04-17T10:49:27.903
65717
2020-04-17T11:39:25.513
2020-04-17T11:39:25.513
3060
39678
question
macos bash
tr -d '\n' を実行しても改行を削除できない問題


歴史的事情というやつにより、[改行コード](https://ja.wikipedia.org/wiki/%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89)には
CR と LF と CR+LF の３種類があります。

`\r` は CR  
`\n` は LF

`tr` はバイト単位で操作しますので `tr -d '\n'` は LF のみ削除することになります。一方で Windows / MacOS / Unix
クロスプラットフォームなツールは３種類の改行をどれでも受け付けるものがあります。もともと Windows で作成した CR+LF 改行のファイルから LF
のみ削除しても CR が残っているので、ツールは単独 CR を普通に改行として扱う可能性があります。

# cygwin を使っていると Unix 由来の LF 改行と MS-DOS 由来の CR+LF 改行が混在する羽目になって面倒が多かったり

CR と LF の両方を削除するようにすると希望の動作をするはずです。


CC BY-SA 4.0
2020-04-17T11:18:36.893
65721
2020-04-17T11:18:36.893
8589
65717
answer