Shell脚本之正则表达式以及文本编辑器

目录

一、正则表达式

1.定义

2.元字符

 元字符使用(这里举例为常用的元字符)

3.表示次数

(1)匹配字符

(2)查看子网掩码信息

4. 位置锚定

5.扩展正则表达式

(1)表示次数

(2)表示分组

二、文本编辑器

1.sed

(1)定义

 (2)功能

(3)基本用法

(4)sed脚本格式 

三、总结


一、正则表达式

1.定义

正则表达式,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符,主要用来匹配字符串(命令结果,文本内容),通配符匹配文件(而且是已存在的文件)

我们可以使用man手册查看使用方法

man 7 regex

2.元字符

符号 功能
. 匹配任意单个字符,可以是一个汉字
* 匹配前面子表达式0次或者多次
[ ] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
\转义字符 用于取消特殊符号的含义
^ 匹配字符串开始的位置
$ 匹配字符串结束的位置
{n} 匹配前面的子表达式n次
{n,} 匹配前面的子表达式不少于n次
{n,m} 匹配前面的子表达式n到m次
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,即A-Z a-z
[:lower:] 小写字母
[:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
[:digit:] 十进制数
[:xdigit:] 十六进制
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
\w 匹配单词构成部分,等价于**[:alnum:]**
\W 匹配非单词构成部分,等价于[:alnum:]
\S 匹配任何非空白字符,等价于[**^ \ f \ n \ r \ t \ v]**
\s 匹配任何空白字符,包括空格,制表符,换页符等等,等价于[ \ f \ n \ r \ t ]

 元字符使用(这里举例为常用的元字符)

(1)“  .  ”

(2)“ 【】” 

(3)“ *  ”

(4) “ ^ ”

Shell脚本之正则表达式以及文本编辑器_第1张图片

(5)“ space空格 ” 

Shell脚本之正则表达式以及文本编辑器_第2张图片

(6)或者

3.表示次数

(1)匹配字符

(2)查看子网掩码信息

Shell脚本之正则表达式以及文本编辑器_第3张图片

4. 位置锚定

5.扩展正则表达式

与基础正则表达式相差不大

(1)表示次数

(2)表示分组

查看子网掩码信息方法二

二、文本编辑器

1.sed

(1)定义

Shell脚本之正则表达式以及文本编辑器_第4张图片

sed即Stream EDitor,和vim编辑器不同,sed是行编辑器

 (2)功能

Sed是从文件或管道中读取一行,处理一行,输出一行;再读取-行,再处理一行,再输出- -行,直到最后一行。每当处理一行时,把当前处理的行存储在临时缓冲区中,称为模式空间(PatternSpace) ,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。一次处理一行的设计模式使得sed性能很高 , sed在读取大文件时不会出现卡顿的现象。如果使用vi命令打开几十M上百M的文件,明显会出现有卡顿的现象,这是因为vi命令打开文件是一-次性将文件加载到内存,然后再打开。Sed就避免了这种情况,一行一行的处理,打开速度非常快,执行速度也很快

(3)基本用法

se管道d [ option ] . . .    'script:script:....'     [input  file...]

        选项                      自身脚本语法     支持标准输入管道

常用选项

Shell脚本之正则表达式以及文本编辑器_第5张图片

(4)sed脚本格式 

单引号中间需要写脚本;脚本格式如下

组成:'地址+命令'组成

1,不给地址:对全文进行处理(比如行号)

2,单地址:

#:指定的行,$最后一行

/pattern/:被此处模式所能够匹配到的每一行

3.地址范围:

#,#         #从#行到第#行,3,6从第3行到第6行

#,+#       #从#行到+#行,3,+4 表示从3行到第7行

Shell脚本之正则表达式以及文本编辑器_第6张图片

/pat1/ ,/pat2/第一 个正则表达式和第二个正则表达式之间的行

4.步进: ~

1~2奇数行

Shell脚本之正则表达式以及文本编辑器_第7张图片

2~2偶数行

Shell脚本之正则表达式以及文本编辑器_第8张图片

命令选项 

选项 功能
s 替换,替换指定宁符
d 删除,删除选定的行
a 增加,在当前行下面增加一行指定内容
i 插入,在选定行上面插入一行指定内容
c 替换,将选定行替换为指定内容
y 字符转换,转换前后的宁符长度必须相同
p 打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印
字符,则以ASCIl码输出。其通常与“-n”选项一起使用。=:打印行号
l 打印数据流中的文本和不可打印的ASCIl字符(比如结束符$、制表符lt)

修改文件内容

Shell脚本之正则表达式以及文本编辑器_第9张图片

 分组

Shell脚本之正则表达式以及文本编辑器_第10张图片

查看子网掩码方法三

2.awk

Shell脚本之正则表达式以及文本编辑器_第11张图片

(1)定义

awk:. Aho, Weinberger, Kernighan,报告生成器,格式化文本输出,GNU/Linux发布的AWK目前由自由软件基金会(FSF) 进行开发和维护,通常也称它为GNU AWK

在Linux/UNIX系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,默认以空格或tab键作为分隔符,并按模式或者条件执行编辑命令。而awk比较倾向于将一行分成多个字段然后进行理。AWK信息的读入也是逐行

(2)功能

指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过波处理,可以在无交互的情况下实现相当复杂的文本操作,被广泛应用于Shell脚本,完成各种自动化配置任务

(3)工作原理

前面提到sed命令常用于-整行的处理,而 awk比较倾向于将一行分成多个”字段然后再进行处理,且默认情况下字段的分隔符为空格或tab键。awk 执行结果可以通过print的功能将字段数据打印显示

(4)格式

awk [选项参数] 'script' var=value file(s)

awk 选项  ‘模式条件{操作}’   文件1  文件2

awk [选项参数] -f scriptfile var=value file(s)

awk  -f|-v   脚本文件   文件1  文件2 

常用选项 

选项 功能
-F 指定输入文件折分隔符

-f

赋值一个用户定义变量
-v 从脚本文件中读取awk命令

 (5)实例展示

1.基础演示

2.查看ip地址方法四

Shell脚本之正则表达式以及文本编辑器_第12张图片

 3.指定分隔符进行筛选信息

Shell脚本之正则表达式以及文本编辑器_第13张图片

(1)我们先筛选出已用%这一列内容

Shell脚本之正则表达式以及文本编辑器_第14张图片

(2)现在我们要吧%号去掉

这是第一种写法

Shell脚本之正则表达式以及文本编辑器_第15张图片

 我们还可以有第二种写法

Shell脚本之正则表达式以及文本编辑器_第16张图片

(3)根据分隔符筛选并导入文件

Shell脚本之正则表达式以及文本编辑器_第17张图片

Shell脚本之正则表达式以及文本编辑器_第18张图片

 4.搜索符(//)进行筛选ip

 (6)awk常用内置变量

变量 功能
ES

指定每行文本的字段分隔符,缺省为空格或制表位。与“F"作用相同-v"FS=:"

NF

当前处理的行的字段个数

NR

当前处理的行的行号(序数)

$0

当前处理的行的整行内容

$n

当前处理行的第n个字段(第n列)

FILENAME

被处理的文件名

RS

行分隔符

我们对passwd文件进行筛选

Shell脚本之正则表达式以及文本编辑器_第19张图片

Shell脚本之正则表达式以及文本编辑器_第20张图片

Shell脚本之正则表达式以及文本编辑器_第21张图片

三、总结

今天讲了正则表达式以及文本编辑器相关内容,希望可以帮助到大家! ++

你可能感兴趣的:(知识科普,项目,正则表达式,vim,前端)