目录
一、正则表达式
1.定义
2.元字符
元字符使用(这里举例为常用的元字符)
3.表示次数
(1)匹配字符
(2)查看子网掩码信息
4. 位置锚定
5.扩展正则表达式
(1)表示次数
(2)表示分组
二、文本编辑器
1.sed
(1)定义
(2)功能
(3)基本用法
(4)sed脚本格式
三、总结
正则表达式,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符,主要用来匹配字符串(命令结果,文本内容),通配符匹配文件(而且是已存在的文件)
我们可以使用man手册查看使用方法
man 7 regex
符号 | 功能 |
---|---|
. | 匹配任意单个字符,可以是一个汉字 |
* | 匹配前面子表达式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) “ ^ ”
(5)“ space空格 ”
(6)或者
(1)匹配字符
(2)查看子网掩码信息
与基础正则表达式相差不大
查看子网掩码信息方法二
sed即Stream EDitor,和vim编辑器不同,sed是行编辑器
Sed是从文件或管道中读取一行,处理一行,输出一行;再读取-行,再处理一行,再输出- -行,直到最后一行。每当处理一行时,把当前处理的行存储在临时缓冲区中,称为模式空间(PatternSpace) ,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。一次处理一行的设计模式使得sed性能很高 , sed在读取大文件时不会出现卡顿的现象。如果使用vi命令打开几十M上百M的文件,明显会出现有卡顿的现象,这是因为vi命令打开文件是一-次性将文件加载到内存,然后再打开。Sed就避免了这种情况,一行一行的处理,打开速度非常快,执行速度也很快
se管道d [ option ] . . . 'script:script:....' [input file...]
选项 自身脚本语法 支持标准输入管道
常用选项
单引号中间需要写脚本;脚本格式如下
组成:'地址+命令'组成
1,不给地址:对全文进行处理(比如行号)
2,单地址:
#:指定的行,$最后一行
/pattern/:被此处模式所能够匹配到的每一行
3.地址范围:
#,# #从#行到第#行,3,6从第3行到第6行
#,+# #从#行到+#行,3,+4 表示从3行到第7行
/pat1/ ,/pat2/第一 个正则表达式和第二个正则表达式之间的行
4.步进: ~
1~2奇数行
2~2偶数行
命令选项
选项 | 功能 |
s | 替换,替换指定宁符 |
d | 删除,删除选定的行 |
a | 增加,在当前行下面增加一行指定内容 |
i | 插入,在选定行上面插入一行指定内容 |
c | 替换,将选定行替换为指定内容 |
y | 字符转换,转换前后的宁符长度必须相同 |
p | 打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印 字符,则以ASCIl码输出。其通常与“-n”选项一起使用。=:打印行号 |
l | 打印数据流中的文本和不可打印的ASCIl字符(比如结束符$、制表符lt) |
修改文件内容
分组
查看子网掩码方法三
awk:. Aho, Weinberger, Kernighan,报告生成器,格式化文本输出,GNU/Linux发布的AWK目前由自由软件基金会(FSF) 进行开发和维护,通常也称它为GNU AWK
在Linux/UNIX系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,默认以空格或tab键作为分隔符,并按模式或者条件执行编辑命令。而awk比较倾向于将一行分成多个字段然后进行理。AWK信息的读入也是逐行
指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过波处理,可以在无交互的情况下实现相当复杂的文本操作,被广泛应用于Shell脚本,完成各种自动化配置任务
前面提到sed命令常用于-整行的处理,而 awk比较倾向于将一行分成多个”字段然后再进行处理,且默认情况下字段的分隔符为空格或tab键。awk 执行结果可以通过print的功能将字段数据打印显示
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命令 |
1.基础演示
2.查看ip地址方法四
3.指定分隔符进行筛选信息
(1)我们先筛选出已用%这一列内容
(2)现在我们要吧%号去掉
这是第一种写法
我们还可以有第二种写法
(3)根据分隔符筛选并导入文件
4.搜索符(//)进行筛选ip
变量 | 功能 |
ES | 指定每行文本的字段分隔符,缺省为空格或制表位。与“F"作用相同-v"FS=:" |
NF | 当前处理的行的字段个数 |
NR | 当前处理的行的行号(序数) |
$0 | 当前处理的行的整行内容 |
$n |
当前处理行的第n个字段(第n列) |
FILENAME | 被处理的文件名 |
RS | 行分隔符 |
我们对passwd文件进行筛选
今天讲了正则表达式以及文本编辑器相关内容,希望可以帮助到大家! ++