unix文件中需要dos行尾字符,不附加Unix行尾

时间:2014-04-16 02:00:08

标签: unix text format dos

我需要在Unix上创建一个dos格式的文本文件,其行尾字符为\ r \ n。

在Unix和vi中,我可以看到(通过“设置列表”)行结尾的$ end 当我使用:

将文件转换为DOS格式时
perl -i -pne "s/\n/\r\n/g" i.txt  

我得到的结尾为:^ M $。
这很接近,但我需要的是一个以\ r \ n结尾的文件(即:仅限^ M)。

示例i.txt文件(例如,如果在vi中启用了设置列表):
开始文字第一行$
开始文字第二行$

转换产生:
开始文字第一行^ M $
开始文字第二行^ M $

需要:
开始文字第一行^ M
开始文字第二行^ M

所以我需要用于行尾的dos单字符表示。 unix2dos没有帮助。建议?

1 个答案:

答案 0 :(得分:1)

$不代表角色。它只显示线的结束位置。

这样做的目的是显示尾随空格,就像在这个例子中解释uniq输出一样:

$ uniq file
foo
foo 

$ cat -vE file
foo$
foo $

由于它只是一个视觉标记,因此询问如何删除它是没有意义的。它永远不会存在。如果您需要\r\n,那么^M$是正确的。这是一个例子,可以通过hex dump验证:

$ cat -vE file
foo^M$
bar^M$

$ od -c -t x1 < file
0000000   f   o   o  \r  \n   b   a   r  \r  \n
         66  6f  6f  0d  0a  62  61  72  0d  0a