awk 正则表达式、正则运算符详细介绍

前言:使用awk作为文本处理工具,正则表达式是少不了的。 要掌握这个工具的正则表达式使用。其实,我们不必单独去学习它的正则表达式。正则表达式就像一门程序语言,有自己语法规则已经表示意思。 对于不同工具,其实大部分表示意思相同的。在linux众多文本处理工具(awk,sed,grep,perl)里面用到正则表达式。其实就只有3种类型。详细可以参考:linux shell 正则表达式(BREs,EREs,PREs)差异比较。只要是某些工具是属于某种类型的正则表达式。那么它的语法规则基本一样。 通过那篇文章,我们知道awk的正则表达式,是属于:扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)。

一、awk Extended Regular Expression (ERES)基础表达式符号介绍

字符 功能
+ 指定如果一个或多个字符或扩展正则表达式的具体值(在 +(加号)前)在这个字符串中,则字符串匹配。命令行:

awk ‘/smith+ern/‘ testfile

将包含字符 smit,后跟一个或多个 h 字符,并以字符 ern 结束的字符串的任何记录打印至标准输出。此示例中的输出是:

smithern, harry smithhern, anne

? 指定如果零个或一个字符或扩展正则表达式的具体值(在 ?(问号)之前)在字符串中,则字符串匹配。命令行:

awk ‘/smith?/‘ testfile

将包含字符 smit,后跟零个或一个 h 字符的实例的所有记录打印至标准输出。此示例中的输出是:

smith, alan smithern, harry smithhern, anne smitters, alexis

| 指定如果以 |(垂直线)隔开的字符串的任何一个在字符串中,则字符串匹配。命令行:

awk ‘/allen | alan /‘ testfile

将包含字符串 allen 或 alan 的所有记录打印至标准输出。此示例中的输出是:

smiley, allen smith, alan

( ) 在正则表达式中将字符串组合在一起。命令行:

awk ‘/a(ll)?(nn)?e/‘ testfile

将具有字符串 ae 或 alle 或 anne 或 allnne 的所有记录打印至标准输出。此示例中的输出是:

smiley, allen smithhern, anne

{m} 指定如果正好有 m 个模式的具体值位于字符串中,则字符串匹配。命令行:

awk ‘/l{2}/‘ testfile

打印至标准输出

smiley, allen

{m,} 指定如果至少 m 个模式的具体值在字符串中,则字符串匹配。命令行:

awk ‘/t{2,}/‘ testfile

打印至标准输出:

smitters, alexis

{m, n} 指定如果 m 和 n 之间(包含的 m 和 n)个模式的具体值在字符串中(其中m<= n),则字符串匹配。命令行:

awk ‘/er{1, 2}/‘ testfile

打印至标准输出:

smithern, harry smithern, anne smitters, alexis

[String] 指定正则表达式与方括号内 String 变量指定的任何字符匹配。命令行:

awk ‘/sm[a-h]/‘ testfile

将具有 sm 后跟以字母顺序从 a 到 h 排列的任何字符的所有记录打印至标准输出。此示例的输出是:

smawley, andy

[^ String] 在 [ ](方括号)和在指定字符串开头的 ^ (插入记号) 指明正则表达式与方括号内的任何字符不匹配。这样,命令行:

awk ‘/sm[^a-h]/‘ testfile

打印至标准输出:

smiley, allen smith, alan smithern, harry smithhern, anne smitters, alexis

~,!~ 表示指定变量与正则表达式匹配(代字号)或不匹配(代字号、感叹号)的条件语句。命令行:

awk ‘$1 ~ /n/‘ testfile

将第一个字段包含字符 n 的所有记录打印至标准输出。此示例中的输出是:

smithern, harry smithhern, anne

^ 指定字段或记录的开头。命令行:

awk ‘$2 ~ /^h/‘ testfile

将把字符 h 作为第二个字段的第一个字符的所有记录打印至标准输出。此示例中的输出是:

smithern, harry

$ 指定字段或记录的末尾。命令行:

awk ‘$2 ~ /y$/‘ testfile

将把字符 y 作为第二个字段的最后一个字符的所有记录打印至标准输出。此示例中的输出是:

smawley, andy smithern, harry

. (句号) 表示除了在空白末尾的终端换行字符以外的任何一个字符。命令行:

awk ‘/a..e/‘ testfile

将具有以两个字符隔开的字符 a 和 e 的所有记录打印至标准输出。此示例中的输出是:

smawley, andy smiley, allen smithhern, anne

*(星号) 表示零个或更多的任意字符。命令行:

awk ‘/a.*e/‘ testfile

将具有以零个或更多字符隔开的字符 a 和 e 的所有记录打印至标准输出。此示例中的输出是:

smawley, andy smiley, allen smithhern, anne smitters, alexis

\ (反斜杠) 转义字符。当位于在扩展正则表达式中具有特殊含义的任何字符之前时,转义字符除去该字符的任何特殊含义。例如,命令行:

/a\/\//

将与模式 a // 匹配,因为反斜杠否定斜杠作为正则表达式定界符的通常含义。要将反斜杠本身指定为字符,则使用双反斜杠。有关反斜杠及其使用的更多信息,请参阅以下关于转义序列的内容。

与PERs相比,主要是一些结合类型表示符没有了:包括:”\d,\D,\s,\S,\t,\v,\n,\f,\r”其它功能基本一样的。 我们常见的软件:javascript,.net,java支持的正则表达式,基本上是:EPRs类型。

二、awk 常见调用正则表达式方法

  • awk语句中:

awk ‘/REG/{action}’

/REG/为正则表达式,可以将$0中,满足条件记录 送入到:action进行处理.

  • awk正则运算语句(~,~!等同!~)

[[email protected] ~]$ awk ‘BEGIN{info="this is a test";if( info ~ /test/){print "ok"}}‘
ok

  • awk内置使用正则表达式函数

gsub( Ere, Repl, [ In ] )

sub( Ere, Repl, [ In ] )

match( String, Ere )

split( String, A, [Ere] )

详细函数使用,可以参照:linux awk 内置函数详细介绍(实例)

ref: http://www.cnblogs.com/chengmo/archive/2010/10/11/1847772.html

时间: 2024-10-03 13:20:13

awk 正则表达式、正则运算符详细介绍的相关文章

awk 正则表达式、正则运算符详细介绍(转)

前言:使用awk作为文本处理工具,正则表达式是少不了的. 要掌握这个工具的正则表达式使用.其实,我们不必单独去学习它的正则表达式.正则表达式就像一门程序语言,有自己语法规则已经表示意思. 对于不同工具,其实大部分表示意思相同的.在linux众多文本处理工具(awk,sed,grep,perl)里面用到正则表达式.其实就只有3种类型.详细可以参考:linux shell 正则表达式(BREs,EREs,PREs)差异比较 .只要是某些工具是属于某种类型的正则表达式.那么它的语法规则基本一样. 通过

linux awk 内置函数详细介绍(实例)

这节详细介绍awk内置函数,主要分以下3种类似:算数函数.字符串函数.其它一般函数.时间函数 一.算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y, x ) 返回 y/x 的反正切. cos( x ) 返回 x 的余弦:x 是弧度. sin( x ) 返回 x 的正弦:x 是弧度. exp( x ) 返回 x 幂函数. log( x ) 返回 x 的自然对数. sqrt( x ) 返回 x 平方根. int( x ) 返回 x 的截断至整数的

C语言 运算符详细介绍及示例代码

C 运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C 语言内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 本章将逐一介绍算术运算符.关系运算符.逻辑运算符.位运算符.赋值运算符和其他运算符. 算术运算符 下表显示了 C 语言支持的所有算术运算符.假设变量 A 的值为 10,变量 B 的值为 20,则: 运算符 描述 实例 + 把两个操作数相加 A + B 将得到 30 - 从第一个操作数中减去第二个操作数 A

(基础篇)正则表达式的语法汇总与详细介绍

用好正则表达式往往会起到事半功倍的效果,以下是对PHP正则表达式的语法汇总和详细介绍. 首先,让我们看看两个特别的字符:'^' 和 '$' 他们是分别用来匹配字符串的开始和结束,一下分别举例说明 "^The": 匹配以 "The"开头的字符串; "of despair$": 匹配以 "of despair" 结尾的字符串; "^abc$": 匹配以abc开头和以abc结尾的字符串,实际上是只有abc与之匹配

JS正则表达式大全(整理详细且实用)

JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*".

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

MySql模糊查询like通配符使用详细介绍

MySql模糊查询like通配符使用详细介绍 转载:http://chenpeng.info/html/2020 MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi.grep和sed的扩展正则表达式模式匹配的格式. 一.SQL模式 SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符).在 MySQL中,SQL的模式缺省是忽略大小写的.下面显示一些例子.注意在你使用SQL模式时,你不能使用=或!=:而使用LIKE或NOT LIKE比较操作

struts详细介绍

Struts2 1. 目录 1.目录 2.MVC 3.STRUTS2解析 4.标签 5.OGNL 6.国际化 7.类型转换 8.校验 9. 拦截器 10.上传与下载 11.STRUTS2与对JSON的支持 2. MVC 把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller).MVC模式最早由Trygve Reenskaug在1978年提出,在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式.MVC模式的目的是实现一种动态的程式设计,使后

nginx重定向规则详细介绍

为何要使用301重定向 在网站建设中需要网页重定向的情况很多:如网页目录结构变动,网页重命名.网页的扩展名改变.网站域名改变等.如果不做重定向,用户的收藏和搜索引擎数据库中的旧地址只能让访客得到一个404错误信息页面,访问流量白白丧失.不仅如此,之前该页面的一切积累(比如PR值)就都白费了. 301重定向不仅能使页面实现自动跳转,对于搜索引擎来说,也可能可以传递PR值. nginx重定向规则详细介绍 http://www.jefflei.com/post/1015.html rewrite命令n