当前位置: 首页 > news >正文

grep/awk/sed笔记

基础概念

grepawksed是Linux中用于文本处理的三大工具,各自有不同的设计目标:

  • grep:专注于文本搜索,支持正则表达式匹配。
  • awk:完整的文本处理语言,支持字段分割、计算和格式化输出。
  • sed:流编辑器,擅长对文本进行替换、删除、插入等操作。

grep常用操作

搜索包含关键词的行

grep "pattern" filename

忽略大小写

grep -i "pattern" filename

显示匹配行的行号

grep -n "pattern" filename

递归搜索目录

grep -r "pattern" /path/to/dir

反向匹配(不包含关键词的行)

grep -v "pattern" filename

awk常用操作

打印文件的第1列和第3列

awk '{print $1, $3}' filename

按条件过滤行(如第2列大于10的行)

awk '$2 > 10 {print $0}' filename

自定义分隔符(如以逗号分隔)

awk -F',' '{print $2}' filename

计算列的总和

awk '{sum += $1} END {print sum}' filename

内置变量示例(NR:行号,NF:字段数)

awk '{print NR, NF}' filename

sed常用操作

替换文本(首次匹配)

sed 's/old/new/' filename

替换所有匹配

sed 's/old/new/g' filename

删除匹配行

sed '/pattern/d' filename

在指定行后插入文本

sed '2a\inserted text' filename

直接修改文件(原地编辑)

sed -i 's/old/new/g' filename

组合使用示例

统计日志中404错误的数量

grep "404" access.log | awk '{print $7}' | sort | uniq -c

提取CSV文件的第2列并替换逗号

awk -F',' '{print $2}' data.csv | sed 's/,/ /g'

过滤包含关键词的行并显示行号

grep -n "error" syslog | awk -F: '{print "Line", $1, ":", $2}'

正则表达式支持

三工具均支持基础正则表达式(BRE),部分支持扩展正则表达式(ERE):

  • grep -E:启用ERE(如+, ?, |)。
  • awk:默认支持ERE。
  • sed -r:部分版本支持ERE(如GNU sed)。

示例:匹配IP地址

grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' logfile

性能对比

  • grep:搜索速度最快,适合简单匹配。
  • awk:处理结构化数据(如CSV)更高效。
  • sed:批量编辑文件时性能优于手动操作。

常见问题

如何匹配多行模式?

  • grep需搭配-z选项(处理NUL分隔的数据)。
  • sed可用N命令读取下一行。
  • awk通过设置RS(记录分隔符)实现。

如何输出彩色结果?

grep --color=auto "pattern" filename

如何处理特殊字符(如制表符)?

  • awk-F'\t'指定分隔符。
  • sed:用$'\t'表示制表符(bash环境)。

相关文章:

  • 黑马k8s(十七)
  • 开发词云的Python程序
  • Linux入门(十一)进程管理
  • 【Day40】
  • 2024PLM系统实施案例:天水天轲零部件
  • 2025030给荣品PRO-RK3566开发板单独升级Android13的boot.img
  • vue+threeJs 绘制3D圆形
  • SpringBoot关于文件上传超出大小限制--设置了全局异常但是没有正常捕获的情况+捕获后没有正常响应返给前端
  • Pytorch Geometric官方例程pytorch_geometric/examples/link_pred.py环境安装教程及图数据集制作
  • OramaCore 是您 AI 项目、答案引擎、副驾驶和搜索所需的 AI 运行时。它包括一个成熟的全文搜索引擎、矢量数据库、LLM界面和更多实用程序
  • K8s工作流程与YAML实用指南
  • 编程之巅:语言的较量
  • 清华大学发Nature!光学工程+神经网络创新结合
  • vue2 + webpack 老项目升级 node v22 + vite + vue2 实战全记录
  • BaseTypeHandler用法-笔记
  • 【Unity】模型渐变技术 BlendShapes变形
  • UE5蓝图暴露变量,类似Unity中public一个变量,在游戏运行时修改变量实时变化和看向目标跟随目标Find Look at Rotation
  • 当 Redis 作为缓存使用时,如何保证缓存数据与数据库(或其他服务的数据源)之间的一致性?
  • BKP(备份寄存器)和 RTC(实时时钟)
  • Datatable和实体集合互转
  • 长春网站建设有什么/域名注册新网
  • 住宅小区物业管理系统网站建设/石家庄新闻网头条新闻
  • 给家乡做网站/百度快照优化的优势是什么
  • 开发个网站需要多少钱/长沙seo推广
  • 有什么网站可以免费建站免费建网站/网络项目怎么推广
  • 淘宝客网站主题下载/线上营销推广方式有哪些