文件查看与文本处理-diff 📄 — 比较文件差异

作用

diff 逐行比较两个文件的差异并输出,支持目录递归比较,是代码审查和补丁生成的常用工具。

语法

1
diff [选项] 文件1 文件2

用法

diff 输出差异行及上下文。-u 统一格式(最常用),-c 上下文格式,-r 递归比较目录,-i 忽略大小写,-B 忽略空行,-w 忽略空格。输出中 < 开头为文件1内容,> 开头为文件2内容。生成补丁:diff -u FILE1 FILE2 > PATCH

常用参数

参数 说明
-u 统一格式输出(默认 3 行上下文)
-c 上下文格式
-r 递归比较目录
-i 忽略大小写
-B 忽略空行
-w 忽略空格
-q 只报告文件是否不同

示例

1
2
3
4
5
diff FILE1.TXT FILE2.TXT              # 显示文件差异
diff -u FILE1.TXT FILE2.TXT # 统一格式输出
diff -r DIR1 DIR2 # 递归比较两个目录
diff -B --ignore-space-change A.TXT B.TXT # 忽略空格差异
diff -q DIR1 DIR2 # 只报告是否不同

来源:菜鸟教程

文件查看与文本处理-echo 📄 — 输出文本

作用

echo 输出一行文本到标准输出,支持变量展开和命令替换,是 Shell 脚本中最基础的输出命令。

语法

1
echo [选项] 字符串

用法

echo 自动在输出末尾添加换行符。-n 不输出换行,-e 启用转义字符(\\n 换行、\\t 制表符)。支持变量展开 $VAR、命令替换 $(CMD)、花括号展开 {1..5}。多数系统中 echo 是 Shell 内置命令。

常用参数

参数 说明
-n 不输出换行
-e 启用转义字符

示例

1
2
3
4
5
echo HELLO                       # 输出文本
echo "HELLO, $USER" # 输出变量内容
echo -n "NO NEWLINE" # 不输出换行
echo -e "LINE1\nLINE2" # 转义字符换行
echo {1..5} # 花括号展开输出 1 2 3 4 5

来源:菜鸟教程

文件查看与文本处理-fold 📄 — 折行显示

作用

fold 在指定宽度处换行,默认 80 列。适合格式化窄屏查看或处理固定宽度文本。

语法

1
fold [选项] 文件

用法

fold 将长行在指定列宽处截断换行。-w N 指定宽度(默认 80),-s 在空格处断行(避免单词截断)。默认在列边界处硬截断可能截断单词,-s 更友好。

常用参数

参数 说明
-w N 指定宽度(默认 80)
-s 在空格处断行
-b 按字节而非列宽度量

示例

1
2
3
4
fold FILE.TXT                  # 默认 80 列换行
fold -w 40 FILE.TXT # 40 列处换行
fold -w 50 -s FILE.TXT # 50 列处空格断行(不截断单词)
fold -w 120 FILE.TXT # 宽屏显示,120 列换行

来源:菜鸟教程

文件查看与文本处理-grep 📄 — 文本搜索

作用

grep(global regular expression print)在文件中按模式搜索文本行并输出匹配结果,支持正则表达式,是文本处理的必备工具。

语法

1
grep [选项] 模式 文件

用法

grep 逐行扫描文件,输出包含匹配模式的行。-i 忽略大小写,-r 递归搜索目录,-C N 显示匹配行前后各 N 行,-L 只输出匹配的文件名,-v 反向匹配(输出不包含模式的行),-E 扩展正则,-w 精确匹配单词,-o 只输出匹配部分。日志分析必备。

常用参数

参数 说明
-i 忽略大小写
-n 显示行号
-v 反向匹配
-C N 匹配行数
-r 递归搜索
-A N 匹配后 N 行
-B N 匹配前 N 行
-C N 前后各 N 行
-L 只输出文件名
-E 扩展正则
-w 精确匹配单词
-o 只输出匹配部分

示例

1
2
3
4
5
6
7
grep "ERROR" APP.LOG              # 搜索包含 ERROR 的行
grep -n "ERROR" APP.LOG # 显示匹配行及行号
grep -ri "TODO" SRC/ # 递归搜索源码中所有 TODO
grep -C 3 "PANIC" CRASH.LOG # 显示匹配行及前后各 3 行
grep "^root" /etc/passwd # 正则搜索以 root 开头的行
grep -E '^[0-9]+$' FILE # 扩展正则,纯数字行
grep -L "TODO" *.py # 只输出不含 TODO 的文件名

来源:菜鸟教程

文件查看与文本处理-head 📄 — 显示文件开头

作用

head 显示文件前 N 行内容(默认 10 行),适合快速查看文件头部、日志开头、CSV 列名等。

语法

1
head [选项] 文件

用法

head 默认输出前 10 行。-n 20 指定行数,-c 100 显示前 100 个字节,-q 不显示文件名标题。支持同时查看多个文件,此时会显示文件名标题。

常用参数

参数 说明
-n N 显示前 N 行
-c N 显示前 N 字节
-q 不显示文件名标题
-v 显示详细信息

示例

1
2
3
4
5
head FILE.TXT                    # 显示前 10 行
head -n 20 FILE.TXT # 显示前 20 行
head -c 100 FILE.TXT # 显示前 100 字节
head -n 5 FILE1 FILE2 # 同时查看多个文件头部
head -q -n 1 *.csv # 不显示文件名,只看首行列标题

来源:菜鸟教程

文件查看与文本处理-join 📄 — 关联文件(类似 SQL JOIN)

作用

join 基于共有字段将两个已排序文件的行关联合并,类似数据库的内部连接操作。

语法

1
join [选项] 文件1 文件2

用法

join 以第一个字段(默认)为连接键,匹配两文件中键值相同的行并合并。-1 N 指定文件 1 的第 N 字段为连接键,-2 N 指定文件 2 的第 N 字段。-o 字段列表 自定义输出字段。文件必须按连接键排序。-a 1 左连接(保留文件 1 所有行),-v 2 显示文件 2 未匹配的行。

常用参数

参数 说明
-1 N 文件 1 以第 N 字段为连接键
-2 N 文件 2 以第 N 字段为连接键
-t 分隔符 指定字段分隔符
-o 格式 自定义输出字段
-a N 显示文件 N 的全部行(外连接)
-e 字符串 缺失字段替换值
-i 忽略大小写

示例

1
2
3
4
join FILE1 FILE2                    # 按第一字段关联合并
join -t: -1 3 -2 1 FILE1 FILE2 # 以冒号分隔,file1 字段3=file2 字段1
join -a 1 -e "NULL" FILE1 FILE2 # 左连接,缺失填 NULL
join -o 1.1,2.2 FILE1 FILE2 # 只输出 file1.字段1 和 file2.字段2

来源:菜鸟教程

文件查看与文本处理-less 📄 — 分页查看文件

作用

less 是 more 的增强版分页查看器,支持上下翻页、双向搜索、跳转等操作,查看大文件时只加载可见部分,内存占用低。

语法

1
less [选项] 文件

用法

less 交互式操作:方向键/PageUp/PageDown 翻页,/模式 向下搜索,?模式 向上搜索,G 跳到底部,g 跳到顶部,Q 退出。-N 显示行号,-S 不折行(横向滚动),-I 搜索忽略大小写。支持同时打开多个文件用 :N :P 切换。

常用参数

参数 说明
-N 显示行号
-S 不折行(横向滚动)
-I 搜索忽略大小写
-G 不高亮搜索结果
-M 显示详细状态行
+F 跟踪模式(类似 tail -F)
-p 模式 从匹配行开始显示

示例

1
2
3
4
5
less FILE.TXT                    # 分页查看文件
less -N FILE.TXT # 显示行号
less -S FILE.TXT # 不折行,横向滚动
less +F /var/log/syslog # 跟踪模式,实时查看日志
less -p "ERROR" LOG.TXT # 从第一个 ERROR 处开始显示

来源:菜鸟教程

文件查看与文本处理-more 📄 — 分页查看文件

作用

more 是早期的分页查看器,空格翻页、回车下滚一行、Q 退出,功能较 less 简单但足以满足基本查看需求。

语法

1
more [选项] 文件

用法

more 以百分比形式显示阅读进度。空格键向下翻一屏,回车键下滚一行,B 向上翻屏,/模式 搜索,Q 退出。-d 显示提示信息,-s 压缩空行,+N 从第 N 行开始显示。查看完自动退出(less 不自动退出)。

常用参数

参数 说明
-d 显示提示信息
-s 压缩连续空行为一行
+N 从第 N 行开始
+/模式 从匹配模式处开始
-c 翻页时清屏

示例

1
2
3
4
more FILE.TXT                  # 分页查看文件
more -d FILE.TXT # 显示提示信息
more +10 FILE.TXT # 从第 10 行开始显示
more +/"ERROR" LOG.TXT # 从第一个 ERROR 处开始显示

来源:菜鸟教程

文件查看与文本处理-nl 📄 — 带行号输出文件

作用

nl(number lines)输出文件并添加行号,比 cat -N 更智能,支持自定义编号格式。

语法

1
nl [选项] 文件

用法

nl 默认给非空行编号。-b a 给所有行编号(包括空行),-b t 只给非空行编号。-n rn 右对齐编号,-n ln 左对齐编号,-n rz 右对齐补零。-w N 行号宽度(位数),-v N 起始行号。-s 分隔符 自定义行号与内容间的分隔符。

常用参数

参数 说明
-b a 所有行编号
-b t 非空行编号(默认)
-n rn 右对齐编号
-n ln 左对齐编号
-n rz 右对齐补零
-w N 行号宽度(位数)
-v N 起始行号
-s 分隔符 自定义行号分隔符

示例

1
2
3
4
5
6
nl FILE.TXT                   # 非空行编号输出
nl -b a FILE.TXT # 所有行(含空行)编号
nl -n rn FILE.TXT # 行号右对齐
nl -w 10 FILE.TXT # 行号宽度设为 10 位
nl -v 10 FILE.TXT # 起始行号从 10 开始
nl -s ": " FILE.TXT # 行号与内容间用 ": " 分隔

来源:菜鸟教程

文件查看与文本处理-od 📄 — 八进制转储

作用

od(octal dump)以八进制、十六进制、十进制等格式转储文件原始字节,用于查看二进制文件和不可见字符。

语法

1
od [选项] 文件

用法

od 默认以八进制显示。-A 地址格式 指定地址格式(N 无、O 八进制、X 十六进制),-t 类型 指定输出格式(x1 单字节十六进制、o1 单字节八进制、u1 单字节无符号十进制)。-c ASCII+转义字符显示(最易读),-t x1z 显示十六进制并附带 ASCII 侧边栏。

常用参数

参数 说明
-A 格式 地址格式(N/O/X/D)
-t 类型 输出类型(x1/o1/u1)
-c ASCII + 转义字符显示
-t 类型 输出类型(x1/o1/u1,追加 z 显示 ASCII)
-N 字节 只读前 N 字节
-j N 跳过前 N 字节

示例

1
2
3
4
5
od FILE.TXT                   # 默认八进制转储
od -c FILE.TXT # ASCII + 转义字符显示
od -t x1 FILE.TXT # 单字节十六进制显示
od -A x -t u1 FILE.TXT # 十六进制地址 + 无符号十进制
od -N 100 FILE.TXT # 只读取前 100 字节

来源:菜鸟教程

0%