Files

如何刪除文件中的所有 CRLF(不替換為 LF)

  • January 17, 2015

我想刪除所有輸入後跟換行符(CRLF),例如\r\n在文件中。我怎樣才能做到這一點?我不能使用dos2unix,因為它將 CRLF 替換為 LF。而且我不能使用tr,因為它也將替換\n前面沒有的任何\r. 我怎樣才能做到這一點?

sed ":a;/\r$/{N;s/\r\n//;b a}"

這將匹配所有'\r'結尾的行(後跟'\n')。在這些行中,它將首先附加下一行輸入(同時將'\n分隔符放在中間),然後將結果替換"\r\n"為空字元串,然後回到開頭查看模式空間的新內容是否沒有碰巧再次匹配。

在評論之後:如果您還想'\r'從文件中刪除任何其他內容,只需在刪除 CRLF 組合後添加它:

sed ":a;/\r$/{$!N;s/\r\n//;t a};s/\r//g"

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