我需要在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没有帮助。建议?
答案 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