我收到的文本文件是按位置分隔的字段和换行符分隔的记录 (
CRLF
)。最近,其中一个文本字段开始在记录中显示换行符 (LF
)。这显然在我们的 unix 服务器上造成了一些问题。
我想简单地在文件中查找
LF
的使用并将其替换为单个空格,但这显然会干扰Windows换行符
我已经尝试过
tr
和perl
但似乎不太正确:
cat badinput.txt | perl -p -e 's/\x0D\x0A/\x0D/' | perl -p -e 's/\0A/ /' | perl -p -e 's/\x0D/\x0D\x0A/' > goodoutput.txt
这个想法是
CRLF
替换为 CR
LF
替换为
CR
替换为 CRLF
由于某种原因,我还没有完全理解 CR -> CRLF 转换。
建议?
您需要使用
-0777
读取整个输入,然后进行替换:
cat badinput.txt | perl -0777pe 's/\r\n/\r/g;s/\n/ /g;s/\r/\r\n/g'