判断文件行记录符是回车换行还是换行
判断文件行记录符是回车换行还是换行
通过shell脚本自动判断文件每一行的末尾记录符是回车换行(\r\n)还是换行(\n),主要是在处理数据文件时要进行区分判断
我们通过shell脚本命令进行自动区分判断
Shell源码
1 | |
xxd和od的用法以及区别
本文中是使用的xxd转的十六进制, 另外也可以使用od进行进行转换, 这两者有什么区别?
xxd 和 od 核心对比(Linux 二进制解析工具)
xxd 和 od 都是 Linux 中用于查看文件/输入的二进制/字节内容的工具,但设计初衷、默认行为、使用场景差异极大,我用「对比+实例」的方式讲清二者的用法和区别,方便你记忆:
| 维度 | xxd(Hex Dump) |
od(Octal Dump) |
|---|---|---|
| 设计初衷 | 专为「十六进制解析」设计,轻量、易用,偏向文本/小文件 | 通用「进制转储」工具,默认八进制,适配二进制/大文件/设备文件 |
| 默认输出 | 十六进制 + 地址偏移 + 字符注释(人性化) | 八进制 + 地址偏移(偏底层,可读性差) |
| 核心优势 | 1. 纯十六进制输出(-p)适配文本解析;2. 支持反向转换(十六进制→二进制); 3. 输出格式简洁,适合日常文本/换行符检测 |
1. 支持多进制(八/十/十六/二进制); 2. 适配大文件/设备文件( /dev);3. 系统内置,兼容性极强(所有 Linux 发行版) |
| 常用场景 | 文本文件解析(如换行符 \r\n 检测)、十六进制↔文本互转、小文件二进制查看 |
底层二进制分析、设备文件读取、多进制格式输出、大文件字节统计 |
xxd 核心用法(重点:文本/十六进制解析)
1. 基础用法(默认格式)
1 | |
2. 高频参数(日常最常用)
| 参数 | 作用 | 实例(对应上面的 test.txt) |
|---|---|---|
-p |
纯十六进制输出(无地址/空格/注释) | xxd -p test.txt → 68656c6c6f0d0a |
-c N |
每行显示 N 个字节(默认16) | xxd -c 2 test.txt → 每行2字节,如 6865/6c6c/6f0d/0a |
-l N |
只解析前 N 个字节 | xxd -l 3 test.txt → 只显示前3字节:68656c |
-r |
反向转换(十六进制→二进制/文本) | `echo “68656c6c6f” |
3. 典型场景(我们之前的换行符检测)
1 | |
od 核心用法(重点:多进制/底层解析)
1. 基础用法(默认八进制)
1 | |
2. 高频参数(日常最常用)
| 参数 | 作用 | 实例(对应上面的 test.txt) |
|---|---|---|
-An |
不显示地址偏移 | od -An test.txt → 065150 066154 000012 |
-t x1 |
输出十六进制,每1字节一组(空格分隔) | od -An -t x1 test.txt → 68 65 6c 6c 6f 0d 0a |
-t c |
输出字符(显示 \r\n 等转义符) | od -An -t c test.txt → h e l l o \r \n |
-N N |
只解析前 N 个字节 | od -An -t x1 -N 3 test.txt → 68 65 6c |
3. 典型场景(底层二进制分析)
1 | |
核心区别总结(快速记忆)
- 使用门槛:
xxd:新手友好,默认输出易读,-p参数适配文本解析(如换行符检测);od:偏底层,默认八进制可读性差,需手动指定-t x1转十六进制。
- 功能侧重:
xxd:主打「十六进制↔文本互转」,适合日常文本文件的二进制解析;od:主打「多进制转储」,适合底层二进制/设备文件/大文件分析。
- 反向转换:
xxd -r支持「十六进制→二进制/文本」(如恢复文件);od无反向转换功能,仅能「读」不能「写」。
选型建议(什么时候用哪个)
- 做文本文件解析(如检测换行符
\r\n、查看字符串的十六进制)→ 优先用xxd(-p参数太香); - 做底层二进制分析(如设备文件、大文件、多进制输出)→ 用
od; - 需反向转换(十六进制转文本/二进制)→ 只能用
xxd -r; - 追求极致兼容性(老旧 Linux 系统)→
od(部分极简系统可能没有xxd,但一定有od)。
总结
xxd是「文本友好型」十六进制工具,适合日常文本/小文件解析,我们的换行符检测脚本用它更简洁;od是「通用型」进制转储工具,默认八进制,适配底层/大文件/设备文件,兼容性更强;- 核心差异:
xxd侧重十六进制和文本互转,od侧重多进制底层分析,无反向转换。
蚂蚁🐜再小也是肉🥩!
判断文件行记录符是回车换行还是换行
http://heibanbai.com.cn/posts/62fc3a8f/
“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付