Linux 文件操作与文本处理核心命令详解
文件查看命令及其参数应用
在 Linux 系统中,有多个命令可用于查看文件内容,每个命令适用于不同的使用场景。
| 命令 | 常用显示控制选项 | 特殊功能选项 | 使用示例 |
|---|---|---|---|
| cat |
-n:为所有行编号(包括空行) -b:仅对非空行编号 -s:将连续多个空行合并为一个 |
-v:显示不可打印字符 -T:将 Tab 显示为 ^I -A:等同于 -vET,显示所有隐藏符号 |
cat -b file.log:输出文件内容并为非空行添加编号cat /etc/passwd:快速浏览系统账户信息
|
| more |
Enter:逐行向下滚动 Space:翻页显示 b:向上翻页(部分实现支持) q:退出查看 |
无特殊参数 |
more +5 -10 data.txt:从第 5 行开始,每页显示 10 行内容
|
| less |
Page Down / Up:上下翻页 /pattern:向前搜索 ?pattern:向后搜索 n/N:跳转到下一个/上一个匹配项 |
-i:搜索时不区分大小写 -S:长行不换行,水平截断显示 -m:显示当前阅读进度百分比 |
less -Si /var/log/auth.log:以忽略大小写方式查看认证日志,并禁用自动换行
|
| head |
-n N:显示前 N 行(可简写为 -N) -c N:显示前 N 字节数据 |
无 |
head -n 15 log.txt:查看文件开头 15 行head -c 50 file.bin:提取二进制文件的头部 50 字节
|
| tail |
-n N:显示末尾 N 行 -c N:显示末尾 N 字节 |
-f:持续监控文件新增内容 -F:增强型跟踪,支持文件轮转(如日志切割) -s N:设置刷新间隔(秒) |
tail -f -n 20 app.log:实时观察应用程序日志最后 20 行的变化
|
文本统计与排序操作
对文本内容进行分析时,常需统计行数、单词数量或字节数。wc 命令是完成此类任务的核心工具。
wc document.txt # 输出:行数 单词数 字节数 文件名
wc -l document.txt # 仅输出行数
wc -w data.csv # 统计单词(字段)个数
sort 命令用于对文本行进行排序,默认按字典序升序排列。
sort names.txt # 按字母顺序排序
sort -r scores.txt # 降序排列
sort -n values.txt # 按数值大小排序(避免字符串比较错误)
sort -u input.txt # 排序后去重
文本过滤与模式匹配:grep 工具详解
grep 是强大的文本搜索工具,支持字符串和正则表达式匹配。
grep [OPTIONS] "PATTERN" [FILE...]
| 选项 | 功能说明 | 示例 |
|---|---|---|
-i |
忽略大小写匹配 | grep -i "error" system.log |
-v |
反选:显示未匹配的行 | grep -v "^#" config.conf:排除注释行 |
-n |
输出匹配行的行号 | grep -n "timeout" script.sh |
-c |
只输出匹配行的数量 | grep -c "success" result.log |
-l |
仅列出包含匹配内容的文件名 | grep -l "main()" *.c |
-L |
列出不包含匹配内容的文件名 | grep -L "TODO" *.py |
基础正则表达式(BRE)常用元字符
| 符号 | 含义 | 示例说明 |
|---|---|---|
. |
匹配任意单个字符 | g.p 可匹配 gap, gop, g?p 等 |
* |
前一项出现零次或多次 | a*b 匹配 b, ab, aab, aaab 等 |
^ |
匹配行首 | ^root 匹配以 root 开头的行 |
$ |
匹配行尾 | end$ 匹配以 end 结尾的行 |
[ ] |
字符集合匹配 | [aeiou] 匹配任一元音字母 |
[^ ] |
否定字符集 | [^0-9] 匹配非数字字符 |
\ |
转义特殊字符 | \.txt 匹配 ".txt" 字符串本身 |
文件压缩工具:gzip 与 bzip2
这两个工具主要用于单个文件的压缩与解压,不能直接处理目录。
- gzip:速度快,压缩率适中,生成 .gz 扩展名文件
- bzip2:压缩率更高,但耗时较长,生成 .bz2 文件
常见选项:
-k:保留原始文件(默认会被删除)-v:显示压缩过程与比率-c:输出结果至标准输出(可用于重定向)-[1-9]:设定压缩等级(1 最快,9 最高压缩率)
| 工具 | 输出格式 | 压缩效率 | 执行速度 | 解压命令 | 典型用途 |
|---|---|---|---|---|---|
| gzip | .gz | 中等 | 快 | gunzip 或 gzip -d | 日常快速压缩 |
| bzip2 | .bz2 | 高 | 较慢 | bunzip2 或 bzip2 -d | 需要更小体积的归档 |
gzip -k report.txt # 压缩并保留原文件
bzip2 -9 data.sql # 使用最高压缩级别
gzip -dv archive.gz # 解压并显示详细信息
归档管理:tar 命令综合使用
tar(tape archive)用于打包和解包文件集合,通常结合压缩工具使用。
| 选项 | 作用 |
|---|---|
-c |
创建新的归档包 |
-x |
解压现有归档 |
-t |
列出归档内文件(不解压) |
-f |
指定归档文件名(必须紧随其后) |
-v |
详细输出处理过程 |
-z |
通过 gzip 压缩/解压(.tar.gz) |
-j |
通过 bzip2 处理(.tar.bz2) |
-J |
使用 xz 压缩(.tar.xz,高压缩率) |
-C |
指定解压目标路径 |
--exclude |
打包时排除特定文件或目录 |
tar -czvf backup.tar.gz /home/user/docs # 打包并使用 gzip 压缩
tar -tzvf backup.tar.gz # 查看压缩包内容
tar -xzvf backup.tar.gz -C /restore # 解压到指定目录
tar -cjvf large_data.tar.bz2 /data --exclude='*.tmp' # 排除临时文件打包