linux - 带有 Windows 行结尾的头文件

标签 linux awk sed head

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

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

head -10 file.dat

sed -n 1,10p file.dat

awk 'NR <=10' file.dat

所有这些 produce 都不遵守 windows 行结尾,而是简单地输出整个文件。

有没有办法获取带有 Windows 行结尾的文件的 n 行?

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

最佳答案

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

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

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

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

关于linux - 带有 Windows 行结尾的头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49541584/

相关文章:

linux - npm install -Error/npm/optimist/0.3.7' - Linux Mint

bash - 我在使用 sed 命令删除行和以下行的 while read 行 bash 脚本时遇到问题

ubuntu - SED - 变量上的 "Filename too long"

linux - 关于 init_task 的混淆(pid 0 或 pid 1?)

linux - zsh:找不到命令;表达

linux - 在 Ubuntu 中执行 START-DFS.SH 时权限被拒绝

awk - sed 查找正则表达式模式,然后查找下一个正则表达式模式(可变多行)并替换

bash - 检查是否在 bash 中设置了第 n 位

linux - 使用awk根据某些条件替换多个列的值

bash - 重命名具有各种扩展名的文件