文件包含CRLF和LF。我想删除CRLF

时间:2019-10-03 19:19:01

标签: sed tr

我有一个文件,其中同时包含CRLF和LF。我正在尝试从文件中删除CRLF。我的文件中另一个先前已存在的LF,我想留在后面。我有麻烦,因为似乎sed无法识别CRLF,或者因为tr同时删除了CRLF和LF。我已经

tr -d '\r\n' <file.txt> file2.txt

它也正在删除我文件中的LF。我尝试仅删除\ r,但随后CRLF中的LF被遗忘了。我希望删除CRLF或至少将其转换为空格,但该行并没有结束。

有帮助吗?

我尝试过:

tr -d '\r\n' <file.txt> file2.txt

我也尝试过sed,但找不到CRLF。

2 个答案:

答案 0 :(得分:1)

这会将dos格式的文件转换为linux / unix格式。

dos2unix file

答案 1 :(得分:0)

tr的参数是要操作的字符的列表,而不是字符串,因此\r\n表示\r\n,而不是\r后跟\n。 sed默认情况下无法删除\r\n,因为sed一次读取一条\n终止的行,因此sed缓冲区中永远不会有\r\n,只有{{1}之后的\r sed通过读取该行而被删除。

您可以使用GNU awk来执行多字符RS:

\n

或将GNU sed用于awk -v RS='\r\n' -v ORS= '1' file (但这将立即将整个文件读入内存):

-z