正则表达式基础

来源:互联网 发布:彩虹易支付免签约源码 编辑:程序博客网 时间:2024/06/05 10:31

正则表达式使用单个字符串来描述/匹配一系列符合某句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索/替换那些符合某个模式的文本。正则表达式的缩写为regex

基本语法

  • 选择“|”:例如“boy|girl”可以匹配“boy”或者“girl”
  • 数量限制有:*、+、?、.
    注意:如果在一个模式中不加数量限制符则表示出现一次且仅出现一次
    这里写图片描述
  • 范围和优先级:()圆括号可以定义模式字符串的范围和优先级,理解为是否将括号内的模式串作为一个整体
    例如:“gr(a|e)y”等价于“gray|grey”(体现了优先级)
    再如:“(grand)?father”匹配father和grandfather(体现了范围,将圆括号内容作为一个整体匹配)
  • 语法
    这里写图片描述
  • 优先级:从上到下,从左到右,依次降低
    这里写图片描述
  • regex的思导图
    这里写图片描述

grep模式匹配命令

1.grep命令

用于打印输出文本中匹配的模式串,它使用正则表达式作为模式匹配的条件。grep支持三种正则表达式引擎,分别用三个参数指定
这里写图片描述

通过grep命令使用正则表达式之前,掌握它的常用参数,如下:
这里写图片描述

举例操作如下:
这里写图片描述
使用基本正则表达式,BRE

2.数量举例说明如下

匹配以‘z’开头以‘o’结尾的所有字符串,除了换行符
这里写图片描述

匹配以‘z’开头以‘o’结尾,中间包含一个任意字符的字符串
这里写图片描述

匹配以‘z’开头,以任意多个‘o’结尾的字符串
这里写图片描述

3.选择举例说明如下

这里写图片描述
操作结果如下:
这里写图片描述

4.完整的特殊符号及说明

这里写图片描述
使用特殊符号的原因,是因为上面的[a-z]不是在所有情况下都管用,与主机当前的语系有关,用[:lower:]不会有此问题

5.排除字符的举例说明

这里写图片描述

注意:当“^”放到中括号内为排除字符,否则表示行首
使用扩展正则表达式,ERE

6.数量上,通过grep使用扩展正则表达式需要加上-E参数,或使用egrep

只匹配‘zo’
这里写图片描述

匹配以‘zo’开头的所有单词
这里写图片描述

7.选择上

匹配“www.shiyanlou.com”和“www.google.com”
这里写图片描述

匹配不包含“baidu”的内容
这里写图片描述
注意:以上命令的模式表达式中的“.”因为有特殊含义,所以需要转义

sed流编辑器

1.sed用于过滤和转换文本的流编辑器,它是一个非交互式的编辑器

2.sed的命令基本格式

sed [参数] [执行命令] [输入文件]
举例如下:sed -i ‘1s/sad/happy/’ test
解释:表示将test文件中第一行的”sad“替换为”happy“

3.sed中的参数详细列表如下

这里写图片描述
4.sed执行命令举例说明
将test文件中的所有shiyanlou替换为happy
这里写图片描述
其中的g表示全局范围

再举一个例子,是在后面加上作用范围
这里写图片描述

其中,-i代表直接修改文件内容,2s表示在第二行内的替换,1代表指定行内中的第一个匹配字符串
这里写图片描述

另外一个例子是以指定的行数和步长数进行匹配
这里写图片描述

5.常用动作指令详细列表如下

这里写图片描述

打印指定行
这里写图片描述

行内替换,将输入文本中”shiyanlou“全局替换为”hehe“,并只打印替换的那一行
这里写图片描述
其中p代表只打印指定行,且不能省略,一般与-n结合使用

6.行间替换,打印显示指定文件匹配的行数及内容

awk文本处理语言

1.awk是一种优良的文本处理工具,是最强大的数据处理引擎之一

作用如下

  • 创建简短的程序
  • 创建的程序读取输入文件
  • 数据排序
  • 处理数据
  • 对输入执行计算
  • 生成报表

awk的目录
这里写图片描述

2.awk所有的操作都是基于pattern(模式)——action(动作)对来完成

如果没有pattern则默认匹配输入的全部文本,如果没有action则默认打印匹配内容到屏幕

3.awk处理的方式是将文本分割成一些”字段“,然后在对这些字段进行处理,默认以空格作为一个字段的分割符

4.awk命令基本格式

awk [-F fs] [-v var=value] [-f prog-file | ”program text”] [file…]
其中-F用来指定字段分割符,-v用于预先为程序设定变量,-f用于指定awk命令要执行的程序文件,不加-f直接将程序语句放在这里,最后为awk要处理的文本输入,可以同时输入多个文本文件

举例如下:使用awk将文本内容打印到终端
这里写图片描述
其中:”{}“中的内容为动作,print为打印,这条命令省略了pattern模式,所以匹配的是全部内容

举例说明:将test的第三行的每个字段单独显示为一行
这里写图片描述

另外一个例子:将test的第二行的以点为分段的字段转换成以空格为分隔
这里写图片描述

5.awk常用的内置变量

这里写图片描述

0 0
原创粉丝点击