返回顶部
首页 > 资讯 > 精选 >Ubuntu Pattern正则表达式匹配所指定的示例分析
  • 506
分享到

Ubuntu Pattern正则表达式匹配所指定的示例分析

2023-06-16 23:06:56 506人浏览 八月长安
摘要

本篇文章给大家分享的是有关ubuntu Pattern正则表达式匹配所指定的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Ubuntu Pattern已被广泛应用但是也

本篇文章给大家分享的是有关ubuntu Pattern正则表达式匹配所指定的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

Ubuntu Pattern已被广泛应用但是也在不断的更新,这里介绍Ubuntu Pattern安装设置使用,帮助大家安装更新Ubuntu Pattern系统。选择符合指定条件的记录 Ubuntu Pattern { Action }为awk中最主要的语法. 若某Ubuntu Pattern之值为真则执行它后方的 Action. awk中常使用"关系表达式" (Relational Expression)来当成 Ubuntu Pattern.

awk 中除了>, <, ==, != ,...等关系运算符( Relational Operators )外,另外提供 ~(match),!~(Not Match) 二个关系运算符. 利用这两个运算符, 可判断某字符串是否包含能匹配所指定正则表达式的子字符串. 由于这些特性, 很容易使用awk来编写需要字符串比对, 判断的程序. 组装部门员工调薪5%,(组装部门员工之ID以"A"开头) 所有员工***之薪资率若仍低于100, 则以100计. 编写awk程序打印新的员工薪资率报表.

[分析 ] : 这个程序须先判断所读入的数据行是否合于指定条件, 再进行某些动作.awk中 Ubuntu Pattern { Actions } 的语法已涵盖这种 " if ( 条件) { 动作} "的架构. 编写如下之程序, 并取名 adjust1.awk $1 ~ /^A.*/ { $3 *= 1.05 } $3<100 { $3 = 100 } { printf("%s %8s %d"n", $1, $2, $3)} 执行下列命令 : $awk -f adjust1.awk emp.dat

结果如下 : 屏幕出现 :

A125    Jenny 105   A341      Dan 115   P158      Max 130   P148     John 125   A123    Linda 100

说 明 : awk的工作程序是: 从数据文件中每次读入一个数据行, 依序执行完程序中所有的 Ubuntu Pattern{ Action }指令:

$1~/^A.*/ { $3 *= 1.05 }   $3 < 100 { $3 = 100 }   {printf("%s %8s %d"n",$1,$2,$3)}

再从数据文件中读进下一笔记录继续进行处理. ***个 Ubuntu Pattern { Action }是: $1 ~ /^A.*/ { $3 *= 1.05 } $1 ~ /^A.*/ 是一个Ubuntu Pattern, 用来判断该笔数据行的***栏是否包含以"A"开头的子字符串. 其中 /^A.*/ 是一个Regular Expression, 用以表示任何以"A"开头的字符串. (有关 Regular Expression 之用法 参考 附录 E ).

Actions 部分为 $3 *= 1.05 $3 *= 1.05 与 $3 = $3 * 1.05 意义相同. 运算子"*=" 之用法则与 C 语言中一样. 此后与 C 语言中用法相同的运算子或语法将不予赘述. 第二个 Ubuntu Pattern { Actions } 是: $3 <100 {$3 = 100 } 若第三栏的数据内容(表薪资率)小于100, 则调整为100. 第三个 Ubuntu Pattern { Actions } 是: {printf("%s %8s %d"n",$1, $2, $3 )} 省略了Ubuntu Pattern(无条件执行Actions), 故所有数据行调整后的数据都将被印出.

awk 中数组

awk程序中允许使用字符串当做数组的下标(index). 利用这个特色十分有助于资料统计工作.(使用字符串当下标的数组称为Associative Array) 首先建立一个数据文件, 并取名为 reg.dat. 此为一学生注册的资料文件; ***栏为学生姓名, 其后为该生所修课程.

Mary O.S. Arch. Discrete   Steve D.S. AlGorithm Arch.   Wang Discrete Graphics O.S.   Lisa Graphics A.I.   Lily Discrete Algorithm

awk中数组的特性 使用字符串当数组的下标(index). 使用数组前不须宣告数组名及其大小. 例如: 希望用数组来记录 reg.dat 中各门课程的修课人数. 这情况,有二项信息必须储存:
(a) 课程名称, 如: "O.S.","Arch.".. ,共有哪些课程事先并不明确.
(b)各课程的修课人数. 如: 有几个人修"O.S."

在awk中只要用一个数组就可同时记录上列信息. 其方法如下: 使用一个数组 Number[ ] : 以课程名称当 Number[ ] 的下标. 以 Number[ ] 中不同下标所对映的元素代表修课人数.

例如: 有2个学生修 "O.S.", 则以 Number["O.S."] = 2 表之. 若修"O.S."的人数增加一人,则 Number["O.S."] = Number["O.S."] + 1 或 Number["O.S."]++ . 如何取出数组中储存的信息 以 C 语言为例, 声明 int Arr[100]; 之后, 若想得知 Arr[ ]中所储存的数据, 只须用一个循环, 如 : for(i=0; i<100; i++) printf("%d"n", Arr[i]);

即可. 上式中: 数组 Arr[ ] 的下标 : 0, 1, 2,..., 99 数组 Arr[ ] 中各下标所对应的值 : Arr[0], Arr[1],...Arr[99] 但 awk 中使用数组并不须事先宣告. 以刚才使用的 Number[ ] 而言, 程序执行前, 并不知将来有哪些课程名称可能被当成 Number[ ] 的下标.

awk 提供了一个指令, 藉由该指令awk会自动找寻数组中使用过的所有下标. 以 Number[ ] 为例, awk将会找到 "O.S.", "Arch.",... 使用该指令时, 须指定所要找寻的数组, 及一个变量. awk会使用该的变量来记录从数组中找到的每一个下标. 例如

for(course in Number){....} 指定用 course 来记录 awk 从Number[ ] 中所找到的下标. awk每找到一个下标时, 就用course记录该下标之值且执行{....}中之指令. 藉由这个方式便可取出数组中储存的信息.

[ 范例 : ] 统计各科修课人数,并印出结果. 建立如下程序,并取名为 course.awk: { for( i=2; i <= NF; i++) Number[$i]++ } END{for(course in Number) printf("%10s %d"n", course, Number[course] )}

执行下列命令 : $awk -f course.awk reg.dat
执行结果如下 :

Graphics 2   O.S. 2   Discrete 3   A.I. 1   D.S. 1   Arch. 2   Algorithm 2

这程序包含二个Ubuntu Pattern { Actions }指令. { for( i=2; i <= NF; i++) Number[$i]++ } END{for(course in Number) printf("%10s %d"n", course, Number[course] )} ***个Ubuntu Pattern { Actions }指令中省略了Ubuntu Pattern 部分. 故随着每笔数据行的读入其Actions部分将逐次无条件被执行.

以awk读入***笔资料 " Mary O.S. Arch. Discrete" 为例, 因为该笔数据 NF = 4(有4个字段), 故该 Action 的for Loop中i = 2,3,4. i $i 最初 Number[$i] Number[$i]++ 之后 i=2时 $i="O.S." Number["O.S."]的值从默认的0,变成了1 ;i=3时 $i="Arch." Number["Arch."]的值从默认的0,变成了1 ;同理,i=4时 $i="Discrete" Number["Discrete"]的值从默认的0,变成了1 ;

第二个 Ubuntu Pattern { Actions }指令中END 为awk之保留字, 为 Ubuntu Pattern 的一种. END 成立(其值为true)的条件是: "awk处理完所有数据, 即将离开程序时. "平常读入数据行时, END并不成立, 故其后的Actions 并不被执行; 唯有当awk读完所有数据时, 该Actions才会被执行 ( 注意, 不管数据行有多少笔, END仅在***才成立, 故该Actions仅被执行一次.)

BEGIN 与 END 有点类似, 是awk中另一个保留的Ubuntu Pattern. 唯一不同的是: "以 BEGIN 为 Ubuntu Pattern 的 Actions 于程序一开始执行时, 被执行一次." NF 为awk的内建变量, 用以表示awk正处理的数据行中, 所包含的字段个数. awk程序中若含有以 $ 开头的自定变量, 都将以如下方式解释 : 以 i= 2 为例, $i = $2 表第二个字段数据. ( 实际上, $ 在 awk 中为一运算符(Operator), 用以取得字段数据.)

以上就是Ubuntu Pattern正则表达式匹配所指定的示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: Ubuntu Pattern正则表达式匹配所指定的示例分析

本文链接: https://lsjlt.com/news/285878.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Ubuntu Pattern正则表达式匹配所指定的示例分析
    本篇文章给大家分享的是有关Ubuntu Pattern正则表达式匹配所指定的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Ubuntu Pattern已被广泛应用但是也...
    99+
    2023-06-16
  • Python3正则表达式之:(?(id/name)yes-pattern|no-pattern)条件性匹配
    目录1. 用途2. 参数含义3. 语法4. 用法详解4.1 把(\d+)后面的问号去掉, 也就是说必须存在group 1,不是可有可无 4.2 改一下匹配字符串 ...
    99+
    2024-04-02
  • JavaScript正则表达式的示例分析
    这篇文章主要为大家展示了“JavaScript正则表达式的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript正则表达式的示例分析”这篇文...
    99+
    2024-04-02
  • jmeter正则表达式的示例分析
    小编给大家分享一下jmeter正则表达式的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用jmeter时经常有这样的情况:一个完整的操作流程,需先完成某个操作,获得某个值或数据信息,然后才能进行下一步的操作(也就...
    99+
    2023-06-14
  • VB.NET正则表达式的示例分析
    小编给大家分享一下VB.NET正则表达式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.选择符 VB.NET正则表达式中“ &brvbar;”...
    99+
    2023-06-17
  • 正则表达式组的示例分析
    这篇文章主要为大家展示了“正则表达式组的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“正则表达式组的示例分析”这篇文章吧。正则表达式组的理解把正则表达式的一部分放在圆括号内,你可以将它们...
    99+
    2023-06-17
  • Python正则表达式匹配中文用法示例
    本文实例讲述了Python正则表达式匹配中文用法。分享给大家供大家参考,具体如下: #!/usr/bin/python #-*- coding:cp936-*-#思路,将str转换成unicode,方可...
    99+
    2022-06-04
    示例 中文 正则表达式
  • shell中正则表达式的示例分析
    这篇文章给大家分享的是有关shell中正则表达式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。正则表达式匹配中文字符的正则表达式:[u4e00-u9fa5]评注:匹配中...
    99+
    2024-04-02
  • Java中正则表达式的示例分析
    这篇文章主要介绍了Java中正则表达式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现...
    99+
    2023-06-15
  • C#中正则表达式的示例分析
    这篇文章将为大家详细讲解有关C#中正则表达式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。(1)“@”符号符下两ows表研究室的火热,当晨在“@”虽然并非C#正则表达式的“成员”,但是它经常与C...
    99+
    2023-06-18
  • ES6正则表达式扩展的示例分析
    这篇文章主要为大家展示了“ES6正则表达式扩展的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ES6正则表达式扩展的示例分析”这篇文章吧。构造函数  在...
    99+
    2024-04-02
  • Javascript常用正则表达式的示例分析
    小编给大家分享一下Javascript常用正则表达式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!模式修饰符的可选参数...
    99+
    2024-04-02
  • 匹配重复模式的正则表达式
    小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《匹配重复模式的正则表达式》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!问题内容我有以...
    99+
    2024-04-04
  • Python匹配中文的正则表达式
    正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里...
    99+
    2022-06-04
    中文 正则表达式 Python
  • MySQL正则表达式匹配查询(含实例)
    目录一、正则表达式介绍二、使用正则表达式测试数据1.基本字符匹配2.OR匹配3.模糊匹配4.匹配范围5.匹配特殊字符6. 匹配字符类7.匹配多个实例8.定位符总结一、正则表达式介绍 ...
    99+
    2024-04-02
  • Python使用中文正则表达式匹配指定中文字符串的方法示例
    本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法。分享给大家供大家参考,具体如下: 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下....
    99+
    2022-06-04
    中文 示例 字符串
  • 正则表达式的匹配规则有哪些
    正则表达式的匹配规则有以下几种:1. 字符匹配:使用普通字符来匹配输入的相应字符。2. 通配符匹配:使用特殊字符来匹配任意一个字符。...
    99+
    2023-09-26
    正则表达式
  • PHP正则表达式限定匹配身份证格式
    标题:PHP正则表达式限定匹配身份证格式 在日常的开发工作中,我们经常会遇到需要对身份证号码进行格式校验的情况。身份证号码是每个人的重要身份信息,其格式的正确性至关重要。在PHP中,我...
    99+
    2024-03-05
    php 正则表达式 身份证
  • Linux命令中正则表达式的示例分析
    小编给大家分享一下Linux命令中正则表达式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!命令中的正则表达式 如果要在命令输出或文本中筛选内容...
    99+
    2023-06-09
  • Dreamweaver中正则表达式搜索的示例分析
    这篇文章主要为大家展示了“Dreamweaver中正则表达式搜索的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Dreamweaver中正则表达式搜索的示例分析”这篇文章吧。比如:&nb...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作