0

我正在将 LINUX(Debian) 中的 ASCII 文件读入 Python CGI 脚本,在其中通过网页对其进行编辑然后保存,

如果我使用图形文本编辑器,则已编辑和未编辑的文件看起来相同并且格式正确。

使用 vi 编辑的文件包含ctrl M作为 EOL 标记,并且所有行合并为一个,但未编辑的文件格式正确。使用:set List在 vi 中查看控制字符,编辑后的文件仍然如前所述,但在未编辑的文件$中显示为 EOL 标记。我知道 LINUX EOL 是 ctrl 0x0D 但它是什么$

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

4

2 回答 2

1

$vi(在某些模式下)显示。它不在文件内容中。你可以od -cx yourfile用来检查。

于 2012-07-17T10:36:48.867 回答
1

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

^Mor(CTRL-M)字符大致相当于回车

从您所说的来看,听起来图形文本编辑器正在使用类似 Mac 的 EOL,它只是一个没有换行符的回车 (CR)。因此,^M人物和所有的台词合二为一。如果它使用的是 Windows/DOS EOL,即回车加换行符 (CR+LF),我会期望这些^M字符,但它的每一行都是单独的行。

这个答案解释了如何摆脱^M角色。我不会使用dos2unix,因为我不确定它会如何处理只有 CR 而不是 CR+LF。

于 2012-07-17T14:45:32.343 回答