【问题标题】:LINUX End of LineLINUX 行尾
【发布时间】:2012-07-16 06:27:24
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python linux ascii vi


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      ^M(CTRL-M) 字符是 roughly equivalent to a carriage return

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

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

      【讨论】:

      • 感谢您的回答 - 我希望我早点看到它,因为它可以节省我一些时间
      猜你喜欢
      • 2016-04-09
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      相关资源
      最近更新 更多