带有 windows 行结尾的头文件

head file with windows line endings

在我的 ContOS 服务器上,我有几个带有 windows 行结尾的大文件。其中,我需要前 n 行才能 运行 一些测试。

我已经尝试了一些标准的 "linux" 方法:

head -10 file.dat

sed -n 1,10p file.dat

awk 'NR <=10' file.dat

所有这些产品都不遵守 windows 行结尾,只是输出整个文件。

有没有办法获取具有 windows 行结尾的文件的 n 行?

此外,应该注意的是输出仍然应该有 windows 行结尾。

这不会发生在 Windows 行结尾,即 CRLF,因为 Unix 使用 LF。所以 LF 仍然会被看到和使用。

如果行尾只有 CR 而没有 LF,您所描述的情况就会发生。您可以将其翻译为:

tr '\r' '\n' < file.dat | head -10 | tr '\n' '\r'

第一个 tr 转换为 Unix 格式,第二个转换回原始格式。

你总是可以使用 vim:

   vim foo.txt +"%s/\r/\r/g" +wq

这将替换所有回车 returns。