文件查看与文本处理-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 字节

来源:菜鸟教程

文件查看与文本处理-paste 📄 — 按列合并文件

作用

paste 将多个文件按行水平合并,Tab 分隔,类似将并排的列拼接成表格。

语法

1
paste [选项] 文件...

用法

paste 取每个文件的第 1 行组成输出第 1 行(Tab 分隔),第 2 行组成输出第 2 行,以此类推。-d 分隔符 指定分隔符(默认 Tab),-s 串行合并(将文件内容转置为一行,然后粘合)。文件行数不同时,短文件缺失部分用空值填充。

常用参数

参数 说明
-d 分隔符 指定列分隔符
-s 串行合并(转置效果)
-z 以 NUL 结尾

示例

1
2
3
4
paste FILE1.TXT FILE2.TXT          # 按列并排合并
paste -d, FILE1.TXT FILE2.TXT # 用逗号分隔列
paste -s FILE1.TXT FILE2.TXT # 串行合并(转置效果)
paste -d " | " A.TXT B.TXT # 自定义分隔符

来源:菜鸟教程

文件查看与文本处理-printf 📄 — 格式化输出

作用

printf 类似 C 语言的 printf,按格式说明符输出,比 echo 更强大的格式化控制能力。

语法

1
printf 格式 [参数...]

用法

printf 不自动添加换行符。格式符:%s 字符串、%d 整数、%f 浮点数、%x 十六进制。转义:\\n 换行、\\t 制表符、\\0NNN 八进制字符。常配合 awk 生成格式化报表。格式字符串会循环应用到所有参数。

常用参数

参数 说明
%s 字符串
%d 整数
%f 浮点数
%x 十六进制
\\n 换行符
\\t 制表符
%10s 宽度 10 的字符串(右对齐)
%-10s 宽度 10 的字符串(左对齐)

示例

1
2
3
4
5
printf "%s\\n" "HELLO"           # 格式化输出字符串
printf "%d\\t%s\\n" 1 "APPLE" # 输出数字和字符串(Tab 分隔)
printf "%10s %5d\\n" "SCORE" 100 # 右对齐:字符串 10 宽,数字 5 宽
printf "%05d\\n" 42 # 补零对齐,输出 00042
printf "%x\\n" 255 # 十进制转十六进制,输出 ff

来源:菜鸟教程

文件查看与文本处理-rev 📄 — 反转字符顺序

作用

rev(reverse)逐行反转字符顺序(从右到左),常配合 cut 处理可变长度字段。

语法

1
rev [选项] 文件

用法

rev 读入每行文本,将该行字符顺序反转后输出。可配合 rev 反转两次实现从末尾截取:rev FILE.TXT | cut -d: -f1 | rev 获取每行最后一个冒号分隔字段。

常用参数

参数 说明
-v 显示版本信息

示例

1
2
3
rev FILE.TXT                   # 反转每行字符顺序
echo "HELLO" | rev # 输出 OLLEH
rev FILE.TXT | cut -d: -f1 | rev # 两次反转提取每行最后一个字段

来源:菜鸟教程

文件查看与文本处理-column 📄 — 格式化对齐列

作用

column 将文本按分隔符格式化为对齐的表格,让杂乱的文本秒变整齐。

语法

1
column [选项] [文件]

用法

column 将输入按列排版对齐。-t 表格模式输出,-s 分隔符 指定列分隔符(默认空格),-N 列名 指定列标题,-J JSON 输出,-R 右对齐。-o 指定输出分隔符。适合格式化命令输出使其更易读。

常用参数

参数 说明
-t 表格模式输出
-s 分隔符 指定列分隔符
-N 列名 指定列标题
-J JSON 格式输出
-R 右对齐
-o 分隔符 输出分隔符
-c 宽度 输出列宽

示例

1
2
3
4
cat FILE.TXT | column -t -s ","   # 按逗号对齐为表格
column -t -s: /etc/passwd # 对齐 /etc/passwd
cat /etc/fstab | column -t # 默认空格对齐
column -N NAME,AGE,SCORE DATA.TXT # 指定列标题

来源:菜鸟教程

文件查看与文本处理-comm 📄 — 比较已排序文件

作用

comm 比较两个已排序文件,输出三列:第一列是文件 A 独有行、第二列是文件 B 独有行、第三列是共有行。

语法

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

用法

comm 要求输入文件已排序。输出三列,-1 隐藏第一列(A 独有),-2 隐藏第二列(B 独有),-3 隐藏第三列(共有)。常用技巧:comm -12 FILE1 FILE2 只显示共有行(交集),comm -23 FILE1 FILE2 只显示 A 独有行,comm -13 FILE1 FILE2 只显示 B 独有行。

常用参数

参数 说明
-1 隐藏第一列(A 独有)
-2 隐藏第二列(B 独有)
-3 隐藏第三列(共有)
--check-order 检查文件是否已排序
--output-delimiter=STR 指定输出分隔符

示例

1
2
3
4
5
sort FILE1 > S1; sort FILE2 > S2   # 先排序再比较
comm S1 S2 # 三列输出:A 独有 | B 独有 | 共有
comm -12 S1 S2 # 只显示共有行(交集)
comm -23 S1 S2 # 只显示 A 独有行
comm -13 S1 S2 # 只显示 B 独有行

来源:菜鸟教程

文件查看与文本处理-cut 📄 — 截取文本字段

作用

cut 按分隔符或字符位置截取文本行中的指定字段,常与管道组合提取表格数据的特定列。

语法

1
cut [选项] 文件

用法

cut 支持三种截取方式:-d 分隔符 按分隔符截取字段,-c 位置 按字符位置截取,-b 位置 按字节位置截取。-f N 指定字段号(从 1 开始),-f 1,3 取第 1 和 3 字段,-f 1-3 取第 1 到 3 字段。常见例子:cut -d: -f1 /etc/passwd 提取所有用户名。

常用参数

参数 说明
-d 分隔符 指定字段分隔符
-f N 取第 N 个字段
-c 位置 按字符位置截取
-b 位置 按字节位置截取
-s 只输出含分隔符的行
--complement 取补集(反向截取)

示例

1
2
3
4
5
cut -d: -f1 /etc/passwd        # 以冒号分隔提取第一列(用户名)
cut -d, -f2,4 DATA.CSV # 提取 CSV 的第 2、4 列
cut -c1-10 FILE.TXT # 截取每行的前 10 个字符
cut -b1-5 FILE.TXT # 截取每行的前 5 个字节
cut -d: -f1-3 /etc/passwd # 提取第 1 到 3 列

来源:菜鸟教程

文件查看与文本处理-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

来源:菜鸟教程

文件查看与文本处理-awk 📄 — 文本处理语言

作用

awk 是强大的文本分析工具,将行按分隔符拆分为字段($1$2…),支持条件判断、循环、数学运算和自定义格式输出。

语法

1
awk [选项] '模式 {动作}' 文件

用法

awk 以记录(行)和字段(列)的方式处理文本。-F: 指定冒号为字段分隔符。内置变量:$0 整行、$1~`$N 各字段、NR 行号、NF 字段数。BEGIN 在处理前执行,END` 在处理后执行。常用于格式化报表、提取日志特定列、数据统计。

常用参数

参数 说明
-F 分隔符 指定字段分隔符
-v VAR=VAL 设置变量
-f 指定脚本文件
$0 整行内容
$1~`$N` 第 N 个字段
NR 当前行号
NF 当前行字段数
BEGIN {} 首次执行前运行
END {} 最后执行后运行

示例

1
2
3
4
5
6
awk '{print $1, $3}' FILE.TXT           # 打印每行第 1、3 列
awk -F: '{print $1}' /etc/passwd # 以冒号分隔,打印用户名列
awk '{sum += $1} END {print sum}' DATA.TXT # 统计第一列数值总和
awk '/ERROR/ {print NR, $0}' LOG.TXT # 搜索含 ERROR 的行并显示行号
awk 'NR > 1 && NR < 10' FILE.TXT # 打印第 2 到 9 行
awk -F, '{print NR, NF, $0}' DATA.CSV # CSV 文件:行号、列数、整行

来源:菜鸟教程

📖 课程位置

本命令在以下课程中讲解:Day 4:awk 列处理

0%