Csv

如何從文件中刪除所有 rn,但保留 n

  • March 22, 2016

我有一個帶有 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,而不是\ror \n

如果我嘗試用sed它來處理它,在逐行處理時會這樣處理,所以它實際上不起作用:

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

Perl 處理轉義序列,包括\n換行符,比舊的 Unix 工具更全面。

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

您是否嘗試過替換為sed

sed 's/\\r\\n//g' -i file.csv

引用自:https://unix.stackexchange.com/questions/271528