带有 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。
在我的 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。