将 DOS 文本文件转换为 Unix

Kev*_*Kev 3 centos text-processing

我有一堆 DOS 格式的 PHP 脚本(vi显示[noeol] [dos]在状态行中),但正如预期的那样,它们不可用。

我跑过dos2unix它们来修复行尾:

dos2unix index.php
Run Code Online (Sandbox Code Playgroud)

但是当我打开文件时,vi我仍然[noeol]在状态行上看到。

在 vi 的十六进制编辑器模式 ( :%!xxd) 中检查它们时,我没有看到任何跳出我的东西。

在原始文件中,行尾如下所示: 0x0D 0x0A

如果在运行后dos2unix它们看起来像:0x0A

我还检查以确保文件的最后一行有一个正确的行尾,并且也在那里 ( 0x0A)。

还有什么可能导致这种情况,我应该担心吗?

我正在运行 CentOS 5.6 x64。

enz*_*tib 5

正如@Klox 所说,在 之后running dos2unix,剩下的问题vi是最后一行缺少换行符。

如果您打开文件vi并保存它,它将为您添加换行符。

或者,您可以批量完成整个操作ed:

#!/bin/bash
for f in <list-of-files-goes-here>; do
    ed -s -- "$f" <<<$',s/\r//g\nw' >/dev/null
done
Run Code Online (Sandbox Code Playgroud)