虾米一家
分享生活,分享技术,我们一直在努力

Linux Shell 脚本高级编程:awk、sed 与正则表达式实战

Linux Shell 脚本高级编程

掌握 awk、sed 和正则表达式,可以高效地处理文本数据和自动化日常任务。

一、正则基础

符号 含义 示例
. 任意字符 a.c 匹配 abc
* 零次或多次 ab*c 匹配 ac
+ 一次或多次 ab+c 匹配 abc
? 零次或一次 ab?c 匹配 ac
^ 行首 ^abc
$ 行尾 abc$
[] 字符集 [abc] 匹配 a/b/c
grep "pattern" file         # 基本正则
grep -E "pattern" file     # 扩展正则
grep -P "pattern" file     # Perl 正则

二、awk 进阶

awk 是强大的文本处理语言,擅长列处理。

awk '{print $1, $3}' file                    # 打印列
awk '$3 > 100 {print $1, $3}' file             # 条件过滤
awk -F: '{print $1, $7}' /etc/passwd           # 分隔符
awk '{sum+=$1} END{print sum, sum/NR}' file    # 统计求和
awk '{count[$1]++} END{for(k in count) print k, count[k]}' file

三、sed 进阶

sed 是流编辑器,擅长行级文本替换。

sed 's/old/new/g' file          # 全局替换
sed '/pattern/d' file           # 删除匹配行
sed '1,5d' file                 # 删除1-5行
sed '/pattern/a new line' file  # 匹配后插入
sed -e 's/old/new/g' -e '/^$/d' file

四、实战案例

# 日志统计 HTTP 状态码
awk '{print $9}' access.log | sort | uniq -c | sort -rn

# 提取 IP 去重
awk '{print $1}' access.log | sort -u

# 批量替换
find . -name "*.conf" -exec sed -i 's/old/new/g' {} \;

# 提取时间段日志
sed -n '/2026-05-10 10:/,/2026-05-10 11:/p' syslog

五、总结

awk、sed 和正则表达式是 Shell 脚本三大核心技能。多加练习,几行命令就能解决复杂文本处理。

本文基于实际生产环境经验编写,配置参数需根据具体情况调整。建议在测试环境验证后再应用于生产环境。如需了解更多技术细节和实践案例,请关注本站后续文章。

赞(0) 打赏
未经允许不得转载:虾米生活分享 » Linux Shell 脚本高级编程:awk、sed 与正则表达式实战

评论 抢沙发

评论前必须登录!

 

虾米一家,生活分享!

关于我们收藏本站

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏