Python LINUX终端

Python LINUX终端,python,linux,ascii,vi,Python,Linux,Ascii,Vi,我正在将一个ASCII文件从LINUX(Debian)读入Python CGI脚本,在该脚本中通过网页进行编辑,然后保存 如果使用图形文本编辑器,则已编辑和未编辑的文件显示相同,并且格式正确 使用vi,编辑的文件包含ctrl M作为下线标记,所有行合并为一行,但未编辑的文件格式正确。使用vi中的:在vi中设置List以查看控制字符,已编辑的文件保持如上所述,但在未编辑的文件中,$显示为下线标记。 我知道LINUX EOL是ctrl 0x0D,但什么是$ 为什么$格式正确,而ctrl M格式不正确

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

如果使用图形文本编辑器,则已编辑和未编辑的文件显示相同,并且格式正确

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


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

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

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

^M
(CTRL-M)
字符无效

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


说明如何删除
^M
字符。我不会使用
dos2unix
,因为我不确定它如何处理只有CR而不是CR+LF的问题。

谢谢你的回答-我希望我早点看到它,因为它会节省我一些时间