Linux运维云升笔记 (一)正则表达式以及文档编辑器sed
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,正则表达式概述使用单个字符来描述、匹配一系列符合某个语句规则的字符串,由普通字符与特殊字符组成,正则表达式广泛使用在脚本编程、文本编辑器中。正则表达式简写为regex、regexp、RE。再大多数语言
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
数据库正确的标识符that
2016年软考数据库真题讲解
服务器限制文件存取路径
软件开发计划书范文文档描述
网络安全基础培视频
苹果8怎么打开移动数据库
画一幅简单的网络安全画
游戏里开服务器
网络安全之我见资料
ssh 进入服务器
自己建手机游戏服务器
做好网络安全的重要意义
网络安全教程ed2k
怎么看数据库表是否被锁住
oa软件开发认可和丰软件
百度服务器出现问题了吗
e4a怎么看数据库
om数据库是什么
做软件开发怎么称呼同事
质量好的浪潮服务器哪个系列好
怎么打开我的世界服务器目录
卷积视觉神经网络技术
数据库还原备份报错
网络安全屏保
趣分类软件开发方案与搭建
汽车物联网软件开发
阿里巴巴未来数据库
我的世界超能力服务器
软件开发的java语言
中国生物文献数据库如何登录