当前位置:首页 > 财经频道 > 正文内容

Linux Shell文本处理神器合集:15个工具+实战例子,效率直接翻倍

聚亿千财2026-02-20财经频道3519

Linux系统中,文本是数据交互的通用语言”——日志文件、配置文件、数据报表、程序输出几乎都以文本形式存在。手动编辑文本不仅繁琐,还容易出错,而掌握Shell文本处理工具,能让你用几行命令完成批量筛选、数据提取、统计分析,甚至复杂的文本清洗。

今天就带你盘点15个最常用的Linux文本处理工具,每个工具都附核心作用、常用选项和实战场景,从基础到进阶,看完就能直接上手!

wKgZPGkam2mAbPkTAAAN53XbQro255.png

一、基础工具:文本操作的基石

这类工具是文本处理的入门必备,解决最常见的查看、统计、拼接需求,用法简单但高频使用。

1.cat:文本拼接与查看的瑞士军刀

核心作用:查看文件内容、拼接多个文件、创建简单文本文件。

常用场景:快速查看短文件、合并日志片段、往文件追加内容。

实战例子

# 1.查看单个文件内容

cat /var/log/xsc_syslog

# 2.合并2个日志文件到新文件

cat xsc_access.log xsc_error.log > xsc_combined.log

# 3.往文件末尾追加内容(需谨慎,避免覆盖)

cat >> xsc_config.conf << EOF

#新增配置项

timeout=300

EOF

2.head/tail:文件首尾内容的截取器

核心作用head查看文件开头(默认前10行),tail查看文件末尾(默认后10行),尤其适合大文件(如日志)。

常用选项

-n N:指定查看N行(如-n 20查看前/20行);

tail -f:实时跟踪文件更新(日志实时监控必备)。

实战例子

# 1.查看nginx配置文件前15行(注释和全局配置通常在开头)

head -n 15 /etc/nginx/xsc_nginx.conf

# 2.实时监控tomcat日志(跟踪最新错误)

tail -f /usr/local/tomcat/logs/xsc_catalina.out

# 3.查看文件最后5行(日志的最新记录)

tail -n 5 /var/log/xsc_auth.log

3.wc:文本统计的计算器

核心作用:统计文件的行数、单词数、字节数,是数据汇总的基础工具。

常用选项

-l:仅统计行数(最常用,比如统计日志有多少条错误);

-w:统计单词数;

-c:统计字节数;

-m:统计字符数(支持中文等多字节字符)。

实战例子

# 1.统计当前目录下所有.sh脚本的总行数(代码量估算)

wc -l xsc_*.sh

# 2.统计日志中包含"ERROR"的行数(错误数量统计)

grep "ERROR" xsc_app.log | wc -l

# 3.统计配置文件的字符数(检查文件是否完整)

wc -m xsc_config.ini

二、筛选工具:精准定位文本内容

这类工具帮你从海量文本中捞取关键信息,避免逐行查找的低效。

4.find:文件搜索的定位雷达

核心作用:按路径、名称、类型、时间、权限等条件搜索文件,是找文件的第一选择。

常用选项

-name "pattern":按文件名匹配(支持通配符,如xsc_*.log匹配所有带前缀的日志文件);

-type f/d/l:按文件类型筛选(f =普通文件,d =目录,l =软链接);

-mtime -N:按修改时间筛选(-7表示最近7天内修改,+30表示30天前修改);

-size +N:按文件大小筛选(+10M表示大于10MB-50k表示小于50KB)。

实战例子

# 1./var/log目录下找所有带xsc_前缀的.log文件(日志文件汇总)

find /var/log -name "xsc_*.log" -type f

# 2.找当前目录下最近3天修改过的带xsc_前缀的.sh脚本(定位近期编辑的脚本)

find . -name "xsc_*.sh" -type f -mtime -3

# 3.找大于100MB的带xsc_前缀的日志文件(清理大文件前定位)

find /var/log -name "xsc_*.log" -type f -size +100M

5.grep:文本内容的搜索侦探

核心作用:按正则表达式匹配文本内容,从文件或输出中筛选关键信息(如日志中的错误、配置中的参数)。

常用选项

-i:忽略大小写(如grep -i "error"匹配ERROR/Error/error);

-n:显示匹配行的行号(定位具体位置);

-v:反向匹配(显示不包含指定内容的行,如grep -v "#"过滤注释);

-r:递归搜索目录下所有文件(如grep -r "password" /etc/);

-c:仅统计匹配行数(如grep -c "ERROR" xsc_app.log)。

实战例子

# 1.nginx日志中找包含"404"的请求(定位页面不存在的链接)

grep "404" /var/log/nginx/xsc_access.log

# 2.过滤配置文件中的注释和空行(查看有效配置)

grep -v -E "^#|^$" /etc/xsc_sysctl.conf

# 3.递归搜索项目目录中包含"TODO"的带xsc_前缀的代码文件(定位待办事项)

grep -r -n "TODO" /home/project/xsc_*.c

6.cut:按列提取文本的手术刀

核心作用:按列分割文本(默认以制表符分隔,可指定分隔符),提取指定列的内容,适合处理CSV、日志等结构化文本。

常用选项

-d "sep":指定分隔符(如-d ","处理CSV文件,-d ":"处理/etc/passwd);

-f N:提取第N列(多列用逗号分隔,如-f 1,3提取第1和第3列);

-c N:按字符位置提取(如-c 1-5提取前5个字符)。

实战例子

# 1./etc/passwd中提取用户名和登录Shell(第1列和第7列,冒号分隔)

cut -d ":" -f 1,7 /etc/xsc_passwd

# 2.处理CSV文件,提取姓名和年龄(第2列和第3列,逗号分隔)

cut -d "," -f 2,3 xsc_user.csv

# 3.提取日志中前10个字符(通常是时间戳)

cut -c 1-10 xsc_app.log

7.paste:多文件文本的拼接胶

核心作用:将多个文件的内容按列拼接(默认以制表符分隔),适合合并结构化数据。

常用选项

-d "sep":指定列分隔符(如-d ","合并为CSV格式);

-s:按行拼接(将单个文件的多行合并为一行,用分隔符连接)。

实战例子

# 1.合并姓名文件和年龄文件(xsc_name.txt每行对应xsc_age.txt每行)

paste -d "," xsc_name.txt xsc_age.txt > xsc_user_info.csv

# 2.将多列日志合并为一行(用空格分隔)

paste -s -d " " xsc_log1.log xsc_log2.log xsc_log3.log

三、处理工具:文本清洗与转换的利器

这类工具帮你完成文本的加工”——去重、排序、替换、删除,解决数据不规整的问题。

8.sort:文本排序的整理师

核心作用:按指定规则对文本行排序,支持数字、字母、日期等排序方式,常与uniq配合去重。

常用选项

-n:按数字排序(默认按字符排序,如“10”会排在“2”前面,-n可修正);

-r:反向排序(从大到小/ZA);

-k N:按第N列排序(需指定分隔符,如-t ":" -k 3n按第3列数字排序);

-u:去重(等价于sort | uniq,但效率更高)。

实战例子

# 1.按数字排序(统计结果排序,如日志错误次数)

sort -n xsc_error_count.txt

# 2.按第2列数字反向排序(处理CSV文件,第2列是分数)

sort -t "," -k 2nr xsc_score.csv

# 3.排序并去重(统计唯一IP

sort -u xsc_access_ip.txt

9.uniq:文本去重的过滤器

核心作用:去除连续重复的行(注意:非连续重复需先sort排序),还能统计重复次数。

常用选项

-c:统计每行的重复次数(如uniq -c显示次数+内容);

-d:仅显示重复的行;

-u:仅显示不重复的行。

实战例子

# 1.统计日志中每个IP的访问次数(先排序再去重统计)

sort xsc_access.log | cut -d " " -f 1 | uniq -c

# 2.显示重复的配置项(定位冗余配置)

sort xsc_config.conf | uniq -d

# 3.显示仅出现一次的内容(定位唯一数据)

sort xsc_data.txt | uniq -u

10.tr:字符转换的魔术师

核心作用:字符替换、删除、压缩,支持单字符或字符集的转换,语法简洁但功能强大。

常用选项

tr "a" "b":将所有字符a替换为b

tr "[]" "[]":小写转大写(反之同理);

tr -d "a":删除所有字符a

tr -s " ":压缩连续的空格为单个空格(处理格式混乱的文本)。

实战例子

# 1.将日志中的小写字母转为大写(方便统一匹配)

cat xsc_app.log | tr "[]" "[]"

# 2.删除文本中的所有标点符号(清理纯文本)

cat xsc_article.txt | tr -d "[]"

# 3.压缩连续空格和换行(将多行文本整理为紧凑格式)

cat xsc_messy.txt | tr -s " n"

11.xargs:命令参数的转换器

核心作用:将标准输入(如find的输出)转换为命令参数,解决参数过长问题(如rm $(find ...)可能报错,find ... | xargs rm更安全)。

常用选项

-n N:每次传递N个参数给命令(如-n 5每次处理5个文件);

-I {}:指定占位符(替换为输入的每个参数,适合复杂命令)。

实战例子

# 1.批量删除找到的临时文件(避免参数过长)

find . -name "xsc_*.tmp" -type f | xargs rm -f

# 2.批量修改文件后缀(将xsc_*.txt改为xsc_*.md

find . -name "xsc_*.txt" -type f | xargs -I {} mv {} {}.md

# 3.批量统计.c文件的行数(每次处理2个文件)

find . -name "xsc_*.c" -type f | xargs -n 2 wc -l

四、进阶工具:复杂文本处理的王牌

这类工具支持脚本化操作,能处理更复杂的文本逻辑——替换特定行、条件筛选、数据计算等。

12.sed:文本流编辑的瑞士军刀

核心作用:按行处理文本(流编辑),支持替换、删除、插入、追加等操作,适合批量修改文本。

常用语法(基本格式:sed '命令'文件):

s/old/new/g:全局替换(将old替换为newg表示全局,不加g仅替换每行第一个);

d:删除指定行(如sed '3d' file删除第3行,sed '/ERROR/d' file删除包含ERROR的行);

i:在指定行前插入(如sed '2i #新增注释' file在第2行前插入注释);

-i:直接修改文件(建议加备份,如-i.bak保留原文件为file.bak)。

实战例子

# 1.全局替换配置文件中的"old_ip""new_ip"(备份原文件)

sed -i.bak 's/old_ip/new_ip/g' xsc_config.conf

# 2.删除日志中的空行和注释行(清理日志)

sed -e '/^$/d' -e '/^#/d' xsc_app.log

# 3.在第5行后追加一行配置(如新增timeout

sed '5a timeout=300' xsc_server.conf

13.awk:文本分析的编程语言

核心作用:按列处理文本,支持条件判断、循环、计算,能完成复杂的数据分析(如统计、过滤、格式化),堪称文本处理中的Python

基本语法awk '条件{动作}'文件(默认以空格/制表符分隔列,$N表示第N列,$0表示整行)。

常用选项

-F "sep":指定分隔符(如-F ","处理CSV-F ":"处理/etc/passwd);

-v var=val:定义变量(如-v sum=0定义求和变量)。

实战例子

# 1.统计日志中每个IP的访问次数(等价于sort+cut+uniq,但更简洁)

awk '{ip[$1]++} END{for(i in ip) print i, ip[i]}' xsc_access.log

# 2.筛选CSV文件中分数大于80的行(第3列是分数)

awk -F "," '$3 > 80 {print $2, $3}' xsc_score.csv

# 3.计算文件第2列的总和(如统计所有文件的大小)

awk '{sum += $2} END{print "Total size:", sum, "KB"}' xsc_file_size.txt

14.diff:文件对比的找茬专家

核心作用:比较两个文件的差异,显示不同的行,常用于版本对比、配置变更检查。

常用选项

-u:生成统一格式的差异(便于阅读和打补丁,diff -u old.conf new.conf);

-r:递归比较目录下所有文件(如diff -r dir1 dir2)。

实战例子

# 1.比较两个配置文件的差异(查看修改内容)

diff -u xsc_old_nginx.conf xsc_new_nginx.conf

# 2.递归比较两个项目目录的文件差异(定位代码变更)

diff -r /home/project/xsc_v1 /home/project/xsc_v2

15.patch:文件补丁的修复师

核心作用:根据diff生成的差异文件(补丁),更新旧文件到新状态,常用于代码更新、配置同步。

常用语法patch旧文件 补丁文件

实战例子

# 1.diff生成的补丁更新旧配置文件

diff -u xsc_old.conf xsc_new.conf > xsc_conf.patch#生成补丁

patch xsc_old.conf xsc_conf.patch #应用补丁

# 2.撤销补丁(恢复到原文件)

patch -R xsc_old.conf xsc_conf.patch

五、工具组合实战:1+1>2的效率技巧

单个工具能力有限,但组合起来能解决90%的复杂文本问题,以下是3个高频组合场景:

场景1:日志错误分析

需求:查找最近7天修改的nginx日志,统计其中“500错误IP及其出现次数,按次数降序排列。

命令组合

find /var/log/nginx -name "xsc_access.log*" -type f -mtime -7

| xargs grep " 500 "

| awk '{print $1}'

| sort | uniq -c

| sort -nr

拆解find找日志xargs grep500错误awkIP→sort+uniq统计次数sort -nr按次数降序。

场景2CSV数据清洗

需求:处理用户CSV文件,筛选年龄大于25的用户,提取姓名和邮箱,按姓名首字母排序,去重后保存为新文件。

命令组合

cut -d "," -f 2,3,5 xsc_user.csv #提取姓名(2)、年龄(3)、邮箱(5

| awk -F "," '$2 > 25 {print $1 "," $3}' #筛年龄>25,保留姓名+邮箱

| sort -t "," -k 1 #按姓名排序

| uniq #去重

> xsc_filtered_user.csv

场景3:批量文件处理

需求:在项目目录中找所有.c文件,删除其中的“TODO”注释行,备份原文件。

命令组合

find /home/project -name "xsc_*.c" -type f

| xargs sed -i.bak '/TODO/d'

拆解find.c文件xargs sed删除TODO行,-i.bak备份原文件。

六、总结:文本处理的核心思维

Linux文本处理的精髓在于管道(|+组合”——用管道将工具串联,让前一个工具的输出作为后一个工具的输入,就能把复杂任务拆解成多个简单步骤。

「找文件」用find,「找内容」用grep

「按列处理」用cut/awk,「排序去重」用sort/uniq

「批量修改」用sed/xargs,「复杂计算」用awk

建议从日常场景入手(比如分析日志、整理数据),慢慢积累自己的命令模板。熟练后,你会发现:原来用Shell处理文本,比打开Excel或写Python脚本快得多!