我有一个文件,其中同时包含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。
答案 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