ファイルからすべての\ r \ nを削除して\ nを維持する方法

ファイルからすべての\ r \ nを削除して\ nを維持する方法

Unix 行末の CSV がありますが、一部の文字列値には Windows 行末が含まれています。

date,notes\n
2014-01-01,"Blah Blah Blah"\n
2014-01-02,"Two things:\r\n  - first thing\r\n  - second thing\n
2014-01-03,"Foo"\n

\n および \r は、ファイルから印刷できない文字の位置のみを表示し、テキストエディタでファイルを開くときに表示される外観は表示しません。

\r\nインスタンスを削除したいが、\nの実際の行末は維持したいと思います。出力は次のようになります。

date,notes\n
2014-01-01,"Blah Blah Blah"\n
2014-01-02,"Two things:  - first thing  - second thing\n
2014-01-03,"Foo"\n

私は同じことが必要ですtr -d '\r\n' file.csvが、文字列が削除される場所はそうで\r\nはありません。\r\n

処理しようとすると、sed1行ずつ処理したかのように処理され、実際には動作しません。

date,notes
2014-01-01,"Blah Blah Blah"
2014-01-02,"Two things:\r
  - first thing\r
  - second thing
2014-01-03,"Foo"

ベストアンサー1

\nPerlは、以前のUnixツールよりも包括的に改行を含むエスケープシーケンスを処理します。

perl -pe 's/\r\n//g'

おすすめ記事