文件查看与文本处理-uniq 📄 — 去重或统计重复行

作用

uniq 报告或删除文件中重复的行。注意:只处理连续重复行,通常需先 sort 排序。

语法

1
uniq [选项] [输入文件 [输出文件]]

用法

uniq 只能去除相邻重复行,因此常与 sort 配合使用:sort FILE.TXT | uniq-c 统计重复次数,-d 只显示重复行,-u 只显示唯一行,-i 忽略大小写。-w N 仅比较前 N 个字符。

常用参数

参数 说明
-c 统计每行出现次数
-d 只显示重复行
-u 只显示唯一行
-i 忽略大小写
-w N 只比较前 N 个字符
--all-repeated 显示所有重复行

示例

1
2
3
4
5
sort FILE.TXT | uniq            # 排序后去重
sort FILE.TXT | uniq -c # 统计每行出现次数
sort FILE.TXT | uniq -d # 只显示重复行
sort FILE.TXT | uniq -u # 只显示唯一行
sort FILE.TXT | uniq -i # 忽略大小写去重

来源:菜鸟教程

📖 课程位置

本命令在以下课程中讲解:Day 4:文本统计与处理 | Day 5:本周串联实操

文件查看与文本处理-wc 📄 — 统计行/词/字符数

作用

wc(word count)统计文件的行数、单词数、字符数或字节数,是代码行数统计的常用工具。

语法

1
wc [选项] 文件

用法

wc 默认输出行数、单词数、字节数。-l 只统计行数,-w 只统计单词数,-c 只统计字节数,-m 统计字符数(含多字节字符)。配合管道使用:cat FILE.TXT | wc -l

常用参数

参数 说明
-l 行数
-w 单词数
-c 字节数
-m 字符数(含多字节)
-L 最长行的字符数

示例

1
2
3
4
5
wc FILE.TXT                    # 统计行、单词、字节数
wc -l FILE.TXT # 只统计行数
wc -w FILE.TXT # 只统计单词数
cat FILE.TXT | wc -l # 管道统计行数
wc *.py # 批量统计多个文件

来源:菜鸟教程

📖 课程位置

本命令在以下课程中讲解:Day 4:文本统计与处理 | Day 5:本周串联实操

文件查看与文本处理-xargs 📄 — 批量执行命令

作用

xargs 从标准输入构建并执行命令行,将输入数据作为参数传递给指定命令,常用于批量文件操作。

语法

1
命令 | xargs [选项] [命令 [初始参数]]

用法

xargs 将管道输入转换为命令参数。-n N 每批 N 个参数,-P N 并行执行 N 个进程,-I {} 指定替换字符串(用 {} 代表输入的每个项)。经典组合:find . -name "*.log" | xargs rm -f-t 打印执行命令(调试),-0 配合 find -print0 处理含空格的文件名。

常用参数

参数 说明
-n N 每批 N 个参数
-P N 并行执行 N 个进程
-I 替换串 指定替换字符串
-0 以 NUL 分隔输入
-t 打印执行命令
-R N 最多替换次数
--max-args=N 每批最多参数数

示例

1
2
3
4
5
find . -name "*.log" | xargs rm -f      # 批量删除 .log 文件
find . -name "*.txt" | xargs grep "HELLO" # 在多个文件中搜索
find . -type f -print0 | xargs -0 wc -l # 安全处理含空格的文件名
echo FILE1 FILE2 FILE3 | xargs -n 1 echo # 每批执行 1 个参数
find . -name "*.py" | xargs -P 4 wc -l # 4 进程并行统计

来源:菜鸟教程

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

来源:菜鸟教程

📖 课程位置

本命令在以下课程中讲解:Day 1:grep 基础 | Day 2:grep 正则与上下文

文件查看与文本处理-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 # 不显示文件名,只看首行列标题

来源:菜鸟教程

📖 课程位置

本命令在以下课程中讲解:Day 3:文件内容查看 | Day 5:本周串联实操

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

来源:菜鸟教程

📖 课程位置

本命令在以下课程中讲解:Day 3:文件内容查看 | Day 5:本周串联实操

文件查看与文本处理-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 # 行号与内容间用 ": " 分隔

来源:菜鸟教程

0%