首页
学习
活动
专区
圈层
工具
发布

问LINUX行尾
EN

Stack Overflow用户
提问于 2012-07-17 18:34:58
回答 2查看 396关注 0票数 0

我正在读取一个ASCII文件从LINUX(Debian)到Python CGI脚本,它是通过网页编辑,然后保存。

如果我使用图形文本编辑器,编辑和未编辑的文件看起来是一样的,并且格式正确。

使用vi时,编辑后的文件包含ctrl M作为终止标记,所有行都合并为一行,但未编辑的文件格式正确。在vi中使用:set List查看控制字符已编辑的文件保持如上所述,但在未编辑的文件中,$显示为EOL标记。我知道LINUX EOL是ctrl 0x0D,但是$是什么呢?

为什么$的格式正确,而ctrl M的格式不正确?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-17 18:36:49

$由vi显示(在某些模式下)。它不在文件内容中。您可以使用od -cx yourfile检查这一点。

票数 1
EN

Stack Overflow用户

发布于 2012-07-17 22:45:32

在vi中,$与EOL字符匹配。您可以使用:set fileformat=XXX更改EOL字符,如here所示。我不是100%确定,如果你改变文件类型,$将匹配新的下线,因为我还没有尝试过。但该链接包含的信息将对答案的其余部分很方便。

^M或(CTRL-M)字符为roughly equivalent to a carriage return。

从你所说的,它听起来像是图形文本编辑器正在使用类似Mac的EOL,它只是一个没有换行符的回车(CR)。因此,^M字符和所有行合并为一行。如果它使用的是Windows/DOS,也就是回车符加换行符(CR+LF),我认为应该是^M字符,但每一行都在它自己的单独一行上。

This answer解释了如何去除^M字符。我不会使用dos2unix,因为我不确定它如何处理只有CR而没有CR+LF的情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11520713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档