Files
如何刪除文件中的所有 CRLF(不替換為 LF)
我想刪除所有輸入後跟換行符(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"