Linux运维云升笔记 (一)正则表达式以及文档编辑器sed
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,正则表达式概述使用单个字符来描述、匹配一系列符合某个语句规则的字符串,由普通字符与特殊字符组成,正则表达式广泛使用在脚本编程、文本编辑器中。正则表达式简写为regex、regexp、RE。再大多数语言
千家信息网最后更新 2025年02月01日Linux运维云升笔记 (一)正则表达式以及文档编辑器sed
正则表达式概述
使用单个字符来描述、匹配一系列符合某个语句规则的字符串,由普通字符与特殊字符组成,正则表达式广泛使用在脚本编程、文本编辑器中。
正则表达式简写为regex、regexp、RE。
再大多数语言当中正则表达式都被包括在两个正斜杠当中"/"
正则表达式有一个特点"贪婪匹配":尽量匹配最长的
正则表达式分类
- 基础正则表达式
\ 转义字符。例如:"!"将逻辑否的!看做普通字符,\还可以折行例子1:[root@localhost ~]# ls -l /home \> /tmp例子2:[root@localhost ~]# grep "b.*in" a.txt 12 bin 3423 sb.*in 2344 binary 4923 binlog 23[root@localhost ~]# grep "b\.\*in" a.txt 23 sb.*in 23
^ 匹配字符串开始的位置,以…为开头的
$ 匹配字符串结束的位置,以…为结尾的
^$ 表示空行,不是空格例子:[root@localhost ~]# cat a.txt aaaa bb aaa b a[root@localhost ~]# grep "^aa$" a.txt aa
. 匹配任意字符串* 匹配前面子表达式(字符)0次或者多次例子:[root@localhost ~]# grep "a 0*" a.txt aa 0aa 00aa bb 0000 aa 00a b a 000
.* 匹配任意字符串[list] 匹配list列表中的一个字符,例如:[abc]、[a-z]、[a-zA-Z0-9]例子:[root@localhost ~]# ifconfig ens32 | grep "TX [pe]" TX packets 1776 bytes 206946 (202.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[^list] 匹配任意非list表中的一个字符,例如:[^a-z]、[^0-9]、[^A-Z0-9]例子:[root@localhost ~]# ifconfig ens32 | grep "TX [a-f]" TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@localhost ~]# ifconfig ens32 | grep "TX [^a-f]" TX packets 1814 bytes 210662 (205.7 KiB)\{n\} 匹配前面子表达式n次
例子:[root@localhost ~]# grep "a 0\{2\}" a.txt aa 00aa bb 0000 aa 00a b a 000\{n,\} 匹配前面子表达式至少n次[root@localhost ~]# grep "a 0\{2,\}" a.txt aa 00aa bb 0000 aa 00a b a 000\{n,m\} 匹配前面子表达式最少n次,最大m次\< 词首牟定:固定词首\> 词未牟定:固定词尾 例子:[root@localhost ~]# grep "\" a.txt a b a 000
转义字符 | 意义 |
---|---|
\a | 响铃(BEL) |
\b | 退格(BS),将当前位置移到前一列 |
\n | 换行(LF)将当前位置移到下一行的开头 |
\r | 回车(CR)将当前位置移动到本行开头 |
\t | 水平制表(HT)调到下一个TAB位置 |
\v | 垂直制表(VT) |
\ | 代表一个反斜杠字符"\" |
扩展正则表达式
+匹配前面子表达式1次及以上
? 匹配前面子表达式0次或者1次
() 将括号中的字符串作为一个整体
| 以或的方式匹配字符
Linux常用的文本处理工具
- grep 匹配,查询(过滤)
- sed 编辑(增加,删除,修改)
- awk 文本格式化(字符串提取)
注意事项
- Linux中正则一般以行为单位处理文件
- alias grep='grep --color=auto'
- 注意字符集,LANG=C
通配符
正则表达式和我们命令行中使用的通配符是有本质区别的。
通配符一般是处理文件名的
ls -l .txt
:任意长度任意字符串,属于通配符。
?:单个任意字符串,属于通配符。
grep命令的参数:
-v 排除匹配的内容(取反)
-E 支持扩展正则表达式=egrep
[root@localhost ~]# grep -Ev "^$|#" /etc/httpd/conf/httpd.conf ServerRoot "/etc/httpd"Listen 80Include conf.modules.d/*.conf
-i 忽略大小写
[root@localhost ~]# cat a.txtaAAA[root@localhost ~]# grep -i "a" a.txt aAAA[root@localhost ~]#
-o 只输出匹配的内容
[root@localhost ~]# grep -o "root" /etc/passwdrootroot
-color=auto 匹配的内容显示颜色(用的不多 alias查看别名)
-n 在行首显示行号
[root@localhost ~]# grep -n "root" /etc/passwd1:root:x:0:0:root:/root:/bin/bash10:operator:x:11:0:operator:/root:/sbin/nologin43:admin:x:1000:1000:root:/home/admin:/bin/bash
-q 匹配内容不显示(静默输出,一般写脚本的时候用而不输出到屏幕)
-w 将过滤条件当成单词来匹配
[root@localhost ~]# grep -w "bin" /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncadmin:x:1000:1000:root:/home/admin:/bin/bash
[root@localhost ~]# grep "bin" /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin
-c 只输出匹配行的计数
[root@localhost ~]# grep -c "root" /etc/passwd3
字符
表达式
正则
字符串
例子
位置
通配符
内容
输出
开头
文本
处理
普通
单个
命令
文件
斜杠
脚本
转义
制表
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全防范范围
服务器怎么导入数据库
珠海地产软件开发外包
山西pdu服务器电源厂
网站租用服务器价格
新熊片数据库
我的世界国际服服务器怎么做
网络安全竞技赛
服务器无法安装虚拟机软件
深圳手机软件开发前途
如何查询数据库表的索引
深圳中翰互联网科技的英文
渠县软件开发商
内蒙古雅讯网络技术
传统网络安全教程
vpn服务器是什么
福州天络网络技术有限公司
数据库表的创建
数据库管理员一般都多少人
目前主流的无线网络技术是802
直销管理系统服务器解决方案
开源ssl vpn服务器
网络安全的一些文字
抚州民宿软件开发
年龄大了做软件开发
花生壳远程服务器无法连接
深圳糖音网络技术
怎么做动态网站的数据库
设备专业学的什么软件开发
扫描枪与数据库