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

第4.1节:使用正则表达式

1 第4.1节:使用正则表达式

  将正则表达式用斜杠括起来,就能用作模式。随后,该正则表达式会与每条输入记录的完整文本进行比对。(通常情况下,它只需匹配文本的部分内容就能视作匹配成功。)例如,以下代码会打印出mail-list文件中,任意位置出现字符串li的记录的第二个字段:

$ awk '/li/ { print $2 }' mail-list

执行结果:

555-5553
555-0542
555-6699
555-3430

  正则表达式也能用于匹配表达式中。这些表达式允许你指定要匹配的字符串,该字符串不必是当前输入记录的全部内容。~!~这两个操作符用于执行正则表达式的比较操作。使用这些操作符的表达式,既可以用作模式,也能在ifwhilefordo语句中使用(详见第7.4节 “动作中的控制语句”)。例如,对于以下表达式,如果exp(作为字符串看待)与regexp匹配,则表达式的值为真:

exp ~ /regexp/

  下面的示例会匹配(筛选出)所有第一个字段中含有大写字母J的输入记录:

$ awk '$1 ~ /J/' inventory-shipped

执行结果:

Jan 13 25 15 115
Jun 31 42 75 492
Jul 24 34 67 436
Jan 21 36 64 620

下面这段代码也能实现相同的功能:

awk '{ if ($1 ~ /J/) print }' inventory-shipped

再看下面这个例子,如果exp(作为字符串看待)与regexp不匹配,那么表达式的值为真:

exp !~ /regexp/

下面的示例会匹配(筛选出)所有第一个字段中不包含大写字母J的输入记录:

$ awk '$1 !~ /J/' inventory-shipped

执行结果:

Feb 15 32 24 226
Mar 15 24 34 228
Apr 31 52 63 420
May 16 34 29 208

当一个正则表达式被包含在斜杠中,如/foo/,我们称其为正则表达式常量,这与5.27是数值常量、"foo"是字符串常量的概念类似。


作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来自AI平台,如:豆包、DeepSeek(硅基流动)(注册链接)等,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

相关文章:

  • Jira讲解
  • wgcloud怎么实现服务器或者主机的远程关机、重启操作吗
  • 树莓派超全系列文档--(10)RaspberryOS上使用 Python
  • mysql dump某一张表
  • 3. 实战(一):Spring AI Trae ,助力开发微信小程序
  • nara wpe去混响学习笔记
  • 主流云平台(AWS、华为云、阿里云、Google Cloud等)的**大数据及人工智能技术栈**及其核心组件的深度解析
  • Java 大视界 -- Java 大数据在自动驾驶高精度地图数据更新与优化中的技术应用(157)
  • vue学习记录二:修饰符(一):事件修饰符
  • 丝杆支撑座间隙调整不当会带来哪些影响?
  • MySQL 表连接(内连接与外连接)
  • 【加密社】做一个展示币种价格的组件
  • STM32F103_LL库+寄存器学习笔记07 - 串口接收缓冲区非空中断
  • Microi吾码界面设计引擎之基础组件用法大全【内置组件篇·下】
  • Linux Shell(Bash) 快捷键整理
  • 2.2.2 Spark单机版环境
  • JAVA中栈内存溢出问题分析
  • REC一些操作解法
  • WPF 依赖项属性
  • Java8通过Stream对list对象某个属性去重
  • react做的电商网站能上线吗/seo是什么意思蜘蛛屯
  • 买了网站模版怎么做/创意营销案例
  • 网站开发的人怎么样/seo教学免费课程霸屏
  • 青岛网站制作套餐/网站收录
  • 太原网站推广/网络推广公司十大排名
  • 三只松鼠的网站建设理念/外贸展示型网站建设公司