Linux 运维达人必备:文本处理六剑客 (grep/sed/awk/tail/more/less) 超级速查手册

       本手册专为Linux系统管理员和运维工程师设计,涵盖六个最核心的文本处理工具:grepsedawktailmoreless。这些工具被称为"文本处理六剑客",是日常运维工作中的利器。

一、命令概览

命令主要功能典型应用场景
grep文本搜索日志过来、配置查找
sed流编辑器批量替换、文本转换
awk文本分析处理数据提取、报表生成
tail查看文件尾部实时日志监控
more分页查看文件浏览大文件
less交互式查看大文件(双向导航)搜索/行号/跳转/反查

二、grep:文本搜索工具

1.作用

   基于正则表达式匹配文本行

grep [选项] "模式" [文件...]

2.命令选项

选项描述示例
-i忽略大小写grep -i "error" systemlog.log
-v反向匹配(排除模式)grep -v "DEBUG" app.log
-n显示行号grep -n "warning" system.log
-c统计匹配行数grep -c "GET" access.log
-r递归目录搜索grep -r "main()" ./src/
-E是用扩展正则表达式grep -E "HTTP/1.[01]\" (4|5)[0-9]{2}" web.log
-A NUM显示匹配行后 NUM 行grep -A 2 "crash" error.log
-B NUM显示匹配行前 NUM 行grep -B 1 "timeout" debug.log
-C NUM显示匹配行前后各 NUM 行grep -C 3 "critical" app.log
--color=auto高亮匹配文本grep "fail" report.txt --color=auto

3.典型示例

# 匹配 IP 地址   -o: 只输出匹配的部分(而不是整行)
#grep -E 等同于  egrep
grep -E -o "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" access.log

# 递归统计代码中函数调用次数
grep -r "parse_data(" ./src | wc -l

# 监控日志实时高亮关键词
tail -f app.log | grep --color=auto -E "ERROR|WARNING"

# 匹配邮箱地址
grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}" users.txt

三、sed:流编辑器

1.作用

  执行文本替换/删除/插入操作

sed [选项] '指令' [文件...]

2.命令选项

指令描述示例
s/old/new/替换第一个匹配sed 's/foo/bar/' file.txt
s/old/new/g全局匹配sed 's/ foo/bar/g' file.txt
/pattern/d删除匹配行sed '/^#/d' config.conf
/pattern/p打印匹配行sed -n '/error/p' log.txt
NUM i\text在第 NUM 行前插入文本sed '3i\### HEADER ###' report.md
NUM a\text在第 NUM 行后追加文本sed '$a\--- END ---' output.txt
NUM c\text替换第 NUM 行sed '5c\REPLACED LINE' data.txt
1,5d删除 1-5 行sed '10,20d' largefile.log

3.典型示例

# 批量替换文件内容(备份原文件)  -i.bak 备份原文件
sed -i.bak 's/old_domain/new_domain/g' *.conf

# 删除空白行
sed '/^$/d' file.txt

#sed -n: 使用静默模式,不自动打印每一行

#截取指定行日志并输出到46.log文件
sed -n '85700,86000p' systemlog.log > 46.log

#截取指定时间段日志
sed -n '/2024-11-01 14:13 /,/2024-11-01 14:18/p' nohup.out >1101.log


#用于分析特定时间范围内的访问日志,统计并显示这段时间内访问最频繁的10个IP地址
sed -n '/2021-03-23T10:40:00/,/2021-03-23T10:50:10/p' /data/logs/access-2024-07-04.log  | awk '{print $1}'  | sort | uniq -c | sort -nr -k1 | head -n 10

# awk '{print $1}' 默认以空格分割,输出第一列
# sort 对提取的ip进行排序
# uniq -c  统计每个唯一IP出现的次数
# sort -nr -k1    -n: 按数值排序 -r: 降序排列 -k1: 按第一列(出现次数)排序
# head -n 10 显示访问最频繁的10个IP

#统计一分钟之内调用接口次数
sed -n "/`date -d "1 minute ago" +"%Y-%m-%dT%H:%M:%S"`/,/`date +"%Y-%m-%dT%H:%M:%S"`/p" /data/logs/access-2024-06-07.log |grep '/api/cscpDepts'| awk -F '|' '{ print $5 }'  | sort | uniq -c | sort -nr -k1 | head -n 5

四、awk:字段处理器

1.作用

   按列处理结构化文本

awk '模式 {动作}' [文件...]

2.命令选项

内置变量描述示例
$0整行内容awk '{print $0}' file
$1,$2..$n第 n 列awk '{print $3,$1}' data
NR当前行号awk 'NR>1 {print}' file
NF当前列awk '{if(NF>5) print}' log
FS输入字段分隔符(默认空格)awk -F: '{print $1}' /etc/passwd
OFS输出字段分隔符awk -v OFS="\t" '{print $1,$3}

3.典型示例

# 条件过滤 输出每行第三列值大于100的 第一列和第三列
awk '$3 > 100 {print $1, $3}' sales.txt

# 数值计算
#计算CSV文件中第四列的总和
awk '{sum+=$4} END {print "Total:", sum}' data.csv

# 字符串操作
#只替换每行第2列中首次出现的"old"为"new",gsub会替换所有匹配项
awk '{sub(/old/,"new",$2); print}' items.txt

# 关联数组统计
#统计网站访问者IP频率 遍历数组并打印每个IP及其出现次数
awk '{ip_count[$1]++} END {for(ip in ip_count) print ip, ip_count[$1]}' access.log

五、tail:文件尾部查看

1.作用

   查看文件末尾内容

tail [选项] [文件]

2.命令选项

选项描述示例
-n N显示最后 N 行(默认 10 行)tail -n 20 log.txt
-f实时追踪文件更新tail -f /var/log/syslog
-F追踪文件(支持重命名/重建)tail -F rotating.log
-s N设置追踪刷新间隔(秒)tail -f -s 2 app.log
-q不显示文件名(多文件时)tail -q file1 file2

3.典型示例

# 监控最新日志并高亮错误
tail -f app.log | grep --color=auto -E "ERROR|CRITICAL"

# 查看最近修改的配置文件
tail -n 15 /etc/nginx/nginx.conf

# 多文件追踪(显示文件名)
tail -f service1.log service2.log

六、more:基础分页查看器

1.作用

   分页显示文件(仅向前导航)

more [选项] [文件]

2.选项

快捷键功能
空格向下翻一页
Enter向下翻一行
/pattern搜索文本
:n跳转到下一个文件
:p跳转到上一个文件
q退出
b回退一页(部分系统支持)

局限性
❌ 不支持向后翻页
❌ 不支持复杂搜索高亮

七、less:高级分页查看器

1.作用

   支持双向导航的分页工具(推荐替代 more

2.选项

快捷键功能
空格 / f向前翻一页
b向后翻一页
↑ / ↓逐行滚动
/pattern向前搜索
?pattern向后搜索
n跳至下一个匹配项
N跳至上一个匹配项
g跳到文件首行
G跳到文件末尾
:n下一个文件(多文件时)
:p上一个文件(多文件时)
-N显示行号(启动选项)
F实时追踪模式(类似 tail -f)
v进入编辑器(vi 模式)
q退出

3.典型示例

# 查看文件并显示行号
less -N server.conf

# 打开后直接跳转到匹配行
less +/ERROR app.log

# 查看压缩文件
less access.log.gz  # 自动解压显示

# 多文件编辑
less file1.log file2.log

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liux3528

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值