Linux 文本处理的“组合拳”,掌握了它们就掌握了 Shell 数据处理的核心.
这几个命令是 Linux 文本处理的“组合拳”,掌握了它们就掌握了 Shell 数据处理的核心。结合刚才我们讨论的文件操作,我为你整理了这 7 个命令的详细解析和对比。
📋 核心命令速查表
命令 全称/含义 核心功能
echo 回声 打印文本或变量值,常用于输 出提示或写入单行内容
cat concatenate 查看、合并文件,或创建/追加内容
uniq unique 去重,报告或删除重复的相邻行
cut 切割 按列(字段)或字符位置提取数据
paste 粘贴 按行合并列将文件内容横向“粘贴”
join 连接 基于共同字段(列)合并两个文件, 类似数据库 JOIN
split 分割 将大文件切割成多个小文件
🧰 详细功能与用法
1. echo:输出与赋值
最简单的输出命令,常配合重定向 > 或 >> 使用。
* 基本用法:echo "Hello World"
* 写入文件(覆盖):
echo "This is new content" > file.txt
* 追加内容:
echo "This line is appended" >> file.txt
2. cat:查看与合并
最常用的文本处理命令。
* 查看:cat file.txt
* 合并:cat file1.txt file2.txt > combined.txt
* 带行号查看:cat -n file.txt
* 创建文件(交互式,Ctrl+D 结束):
cat > newfile.txt
3. uniq:去重
注意:uniq 默认只去除连续的重复行,通常配合 sort 使用。
* 去重(需先排序):
sort file.txt | uniq
* 统计重复次数:uniq -c
* 仅显示重复的行:uniq -d
4. cut:列提取
擅长从每行中截取指定部分。
* 按字符位置:cut -c 1-5 file.txt (取第1-5个字符)
* 按分隔符(如 CSV):
# 以冒号为分隔符,取第1列和第3列
cut -d ':' -f 1,3 /etc/passwd
5. paste:列合并
与 cat 的“上下堆叠”不同,paste 是“左右拼接”。
* 默认合并(用制表符分隔):
paste file1.txt file2.txt
* 自定义分隔符:
# 用逗号连接
paste -d ',' file1.txt file2.txt
* 将单文件多行转为一行:
paste -s file.txt
6. join:关联合并
比 paste 更智能,它基于两个文件的相同字段进行匹配合并(类似 SQL 的 inner join)。
* 前提:两个文件必须已经按关联字段排序。
* 基本用法:
join file1.txt file2.txt
* 指定分隔符:join -t ',' file1.csv file2.csv
* 外连接:join -a 1 file1 file2 (显示 file1 中所有行,包括不匹配的)
7. split:文件分割
处理大文件的利器。
* 按行分割(默认 1000 行):
split -l 500 largefile.txt
* 按大小分割:
split -b 10M largefile.txt # 每个 10MB
* 自定义后缀:
split -d -a 3 largefile.txt part_ # 生成 part_000, part_001...
💡 组合技示例
假设你有一个日志文件,想要分析特定数据:
1. 分割大日志(如果文件太大):
split -b 100M access.log chunk_
2. 提取特定列(如 IP 地址):
cut -d ' ' -f 1 access.log
3. 统计访问次数:
cut -d ' ' -f 1 access.log | sort | uniq -c | sort -nr
这些命令是 Shell 脚本的基石。