广西旅游 网站建设青岛做网站排名
news/
2025/10/6 2:15:21/
文章来源:
广西旅游 网站建设,青岛做网站排名,网站建设公司人员配备,番禺区网络销售费用低一.正则表达式概述
1.正则表达式定义
1.1 定义
使用字符串描述、匹配一系列符合某个规则的字符串
1.2 了解
普通字符#xff1a; 大小写字母、数字、标点符号及一些其它符号元字符#xff1a; 在正则表达式中具有特殊意义的专用字符
1.3 层次分类
基础正则表达式扩展正…一.正则表达式概述
1.正则表达式定义
1.1 定义
使用字符串描述、匹配一系列符合某个规则的字符串
1.2 了解
普通字符 大小写字母、数字、标点符号及一些其它符号元字符 在正则表达式中具有特殊意义的专用字符
1.3 层次分类
基础正则表达式扩展正则表达式编程语言支持的高级正则表达式
1.4 linux三剑客grep sed awk支持的正则表达式
shell是不支持正则表达式的shell支持的是通配符。shell中的正则表达式只有个别命令支持的一般常用的是Linux三剑客
支持正则的shell命令正则类型grep默认使用基本正则表达式(BRE)要使用扩展正则需要加转义字符egrep 或 grep -E使用扩展的正则表达式(ERE)sed默认使用基本正则表达式BREawk使用扩展正则表达式(ERE)
2.基础正则表达式的元字符
基础正则表达式是常用的正则表达式部分
\表示转义字符去掉特殊符号的特殊含义.匹配任意单个字符^匹配字符串开头的位置$匹配字符串末尾的位置*匹配前面的字符出现0~∞[list]匹配list列表中的一个字符列表中只要有一个符合即可[^list]匹配任意非list列表中的一个字符{n}匹配前面的子表达式n次{n,}匹配前面的子表达式最少n次{,n}匹配前面的子表达式最多n次{n,m}匹配前面的子表达式n到m次[ ]代表单个字符\?1次或0次^$空行.*1~∞
2.1 转义字符的运用
2.1.1 将特殊含义的字符转换为普通字符的含义
被转义的特殊字符转义前的含义作用\ 具有赋值的作用或则进行字符判断\ !取反\ 单个符可以将命令挂在后台上两个是逻辑符号且的作用\ $取值变量的作用
2.1.2 将普通字符转换为特殊作用的字符
被赋予新含义的普通字符现在拥有的作用\n换行\t转化为制表符\w小写匹配包括下划线的任何单词字符\W(大写)匹配任何非单词字符。等通于[^A-Za-z0-9_]\r转换后是回车符\d匹配一个数字字符\D匹配一个非数字字符。等价于[^0-9]\s小写空白符\S(大写)非空白符
2.1.3 中括号表达式
普通中括号包围的字符组表示某个单个字符匹配中括号内的任意字符即匹配成功
x[abc]z 可以匹配包含“xaz”、“xbz”、“xcz”的字符串取反表示法 中括号内开头使用 ^ ,表示只要不是中括号内的字符就匹配 x[ ^abc]z 可以匹配包含 “xdz”、“xez” 等字符串但不能匹配包含“xaz”、“xbz”、“xcz”的字符串
特殊元字符在中括号中匹配
想要在中括号中匹配 ^ 需要将其放在 中括号非开头的位置 如[a^]想要在中括号中匹配 - 需要将其放在 开头位置或结尾位置 如[abc-]、[-abc]想要在中括号中匹配 ] 需要将其放在 开头位置 如[]abc]
2.1.4 位置匹配
只匹配字符不匹配字符
^ 匹配行首$ 匹配行尾\b 匹配单词边界处的位置开头和结尾 \bword\b 等价于 \word\\ 匹配单词开头处的位置\ 匹配单词结尾处的位置\B 匹配非单词边界处的位置
2.1.5 字符类
[:alnum:]字母和数字[:alpha:]代表任何英文大小写字母 A-Z a-z[:lower:]小写字母[:upper:]大写字母[:blank:]空白字符[:space:]包括空格、制表符 (水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围广[:cntrl:]不可打印的控制字符退格、删除、警铃...[:digit:]十进制数字[:xdigit:]十六进制数字[:graph:]可打印的非空白字符[:print:]可打印字符[:punct:]标点符号
2.1.6 量词
\{m\} 表示匹配前一个字符或前一个子表达式m次 \{mn\} mn表示匹配前一个字符或前一个字表达式最少m次最多n次 \{m\} 表示匹配前一个字符或前一个子表达式至少m次 \{n\} 表示匹配前一个字符或前一个字表达式最多n次匹配0次也算是成功 * 表示前一个字符或前一个子表达式匹配0次或多次等价于{0} .* 匹配任意长度的任意字符
3.扩展正则表达式的元字符
支持awk和egrep使用如果grep和sed想要正常使用grep -E sed -r
元字符作用含义匹配前面子表达式1次及以上匹配前面子表达式0次或者1次将括号中的字符串作为一个整体|以或的方式匹配字符串
3.1 扩展常用的量词 表示匹配前一个字符或前一个子表达式1或多次即至少一次 等价于 {1, }? 表示匹配前一个字符或前一个子表达式0或1次等价于 {0,1} 等价于 {,1}
3.2 分组捕获和反向引用
使用小括号包围一部分正则表达式这部分正则表达式即成为一个分组整体也称为一个子表达式。
分组后可以使用 \N 来反向引用对应的分组匹配结果N是1-9的正整数\1表示第一个分组表达式的匹配结果\2表达第二个分组表达式的匹配结果。
注意反向引用引用的是分组匹配后的结果不是分组表达式
例如正则表达式(abc|def) and \1xyz 可以匹配字符串“abc and abcxyz ” 或“def and defxyz”但是不能匹配“abc and defxyz” 或 “def and abcxyz”
二.grep 命令
1.命令简介
grep 是一种强大的文本搜索工具它能使用正则表达式并把匹配的行打印出来
格式
grep [options] pattern [file]options表示选项; pattern 表示匹配的的表达式; file 表示文件名例如grep -i root /etc/passwd2.常用选项
-m 数字匹配到数字行停止-v取反-i忽略字符大小写-n显示匹配的行号-c统计匹配的行数-o仅显示匹配到的字符串-q静默模式不输出任何信息-A 数字after 后数字行-B 数字before 前数字行-C 数字context 前后各数字行-e实现多个选项间的逻辑 or 关系-E使用ERE相当于egrep-w匹配整个单词-F不支持正则表达式相当于fgrep-f处理两个文件相同内容把第一个文件作为匹配条件-r递归目录但不处理软连接 开始搜索目录-R递归目录但处理软连接
操作
-m -i -n -c -o -q -A -B -C -e -w -E 扩展正则中这些元字符可直接使用 ? 、 、 { 、 } 、 | 、 ( 和 ) 。 基础正则中这些元字符前需要加反斜线转义 \? 、 \ 、 \{ 、 \} 、 \| 、 \( 和 \) 。 grep sed 默认使用基础正则表达式 grep -E 、 sed -r 、 egrep 、 awk 扩展正则表达式 -r 3.操作
① 统计当前主机的连接状态 ② 统计当前连接主机数 ③ 匹配QQ号 ④ 匹配电话号码 ⑤ 匹配邮箱 ⑥ 统计 /etc/fstab 下面有多少单词 三.sed命令
1.关于sed
1.1 简介
sed 是从文件或管道中读取一行处理一行输出一行再读取一行再处理一行再输出一行直到最后一行。每当处理一行时把当前处理的行存储在临时缓冲区中称为模式空间PatternSpace接着用 sed 命令处理缓冲区中的内容处理完成后把缓冲区的内容送往屏幕。接着处理下一行这样不断重复直到文件末尾。一次处理一行的设计模式使得 sed 性能很高sed 在读取大文件时不会出现卡顿的现象。如果使用 vi 命令打开几十M上百M的文件明显会出现有卡顿的现象这是因为 vi 命令打开文件是一次性将文件加载到内存然后再打开。sed 就避免了这种情况一行一行的处理打开速度非常快执行速度也很快。
1.2 sed 编辑器的工作过程
sed 的工作流程主要包括读取、执行和显示三个过程 读取 sed 从输入流 (文件、管道、标准输入) 中读取一行内容并存储到临时的缓冲区中又称模式空间pattern space )。执行 默认情况下所有的 sed 命令都在模式空间中顺序地执行除非指定了行的地址否则 sed 命令将会在所有的行上依次执行。显示 发送修改后的内容到输出流。在发送数据后模式空间将会被清空。在所有的文件内容都被处理完成之前上述过程将重复执行 直至所有内容被处理完。
注意默认情况下所有的 sed 命令都是在模式空间内执行的因此输入的文件并不会发生任何变化除非使用 sed -i 修改源文件、或使用重定向输出到新的文件中。
1.3 玛玛哈哈
怎么解决 sed 命令处理容量过大或内容过多而导致执行效率缓慢的问题
方案一
使用 split 命令进行文件分割如果文件是百万行的那么我们就创建一个单独的目录将文件分割为一百个一万行的文本再使用 sed 命令进行处理除了使用 split 分割也可以使用一个遍历分割shell脚本进行执行。
方案二
cat 文件名 | sed 处理 这个方案只能针对中型的文件文本如果文本量过大处理效果不好
2.sed 命令与选项操作符
1. 格式
sed [option]... script;script;... [input file...]选项 自身脚本语法 支持标准输入管道
2.常用选项
-e 用指定命令或者脚本来处理输入的文本文件 只有一个操作命令时省略一般在执行多个操作命令使用 -f用指定的脚本文件来处理输入的文本文件-n 不输出模式空间内容到屏幕即不自动打印 可以与 p 命令一起使用完成输出 -r -E使用扩展正则表达式-h显示帮助-i直接修改目标文件-i.xxx备份文件并原处编辑-s将多个文件视为独立文件而不是单个连续的长文件流
3.操作符
“操作”用于指定文件对操作的动作行为也就是 sed 的命令。
通常情况下是采用的 “[n1[,n2]]” 操作参数的格式。n1、n2是可选的代表选择进行操作的行数如操作需要在5~20行之间进行则表示为 “5,20 动作行为”
s替换替换指定字符d删除删除选定的行a增加在当前行下方增加一行指定内容i插入在选定行上方插入一行指定内容c替换将选定行替换为指定内容w保存模式匹配的行至指定文件r读取指定文件的文本至模式空间中匹配的行后y字符转换转换前后的字符长度必须相同p打印行内容。如果同时指定行表示打印指定行如果不指定行则表示打印所有内容如果有非打印字符则以ASCII码输出。其通常与-n选项一起使用打印行号l(小写L)打印数据流中的文本和不可打印的ASCII字符如结束符$ 制表符\t
操作 显示第二行内容 4.脚本格式
由 ‘地址命令’ 组成
① 不给地址 对全文进行处理
② 单地址 数字 指定的数字行 $ 最后一行
③ 地址范围
x,x 从第x行到第x行 36 从第3行到第6行
x,x 从x行到x行 34 从3行到第7行
/pat1/,/pat2/ 第一个正则表达式和第二个正则表达式之间的行
④ 步进 ~
1~2 奇数行
2~2 偶数行
n;打印下一行 操作 小问题
如何打印一段时间间的日志 5.搜索替代
s/pattern/string/修饰符 查找替换,支持使用其它分隔符可以是其它形式ss###替换修饰符
g 行内全局替换
p 显示替换成功的行
w /PATH/FILE 将替换成功的行保存至文件中 指代之前找到的内容 指代变量 分组替换
sed -nr s/正则匹配/\1/p 还可以变换顺序 操作
取ip
① ② 或者 提取版本号 提取0644 6.变量 修改端口 修改网卡名
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928926.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!