linux 脚本 正则表达式

正则表达式

分类

基础正则表达式:BRE

扩展正则表达式:ERE

编程语言支持的高级正则表达式

BRE 和 ERE的语法基本一致,只有部分元字符(预定义好的带有特殊含义的一些符号)需要特殊对待

grep sed 默认使用的基本正则表达式,grep -E,sed -r,egrep,awk使用扩展正则表达式

基本正则表达式

匹配字符

abc:匹配字符串"abc",普通字符的匹配

abcde...:匹配括号内的任意单个字符

axyz:匹配ax ay az

axyzb:匹配axb ayb azb

\n:匹配换行符

\t:匹配制表符

\w:匹配单词字符 a-zA-Z0-9

\W:匹配非单词字符 \^a-zA-Z0-9

\s:匹配空白字符

\S:匹配非空白字符

\d:匹配数字

\D:匹配非数字

. :匹配任意单个字符

上面所说的单词,在正则表达式中的含义:a-zA-Z0-9组成的字符或字符串都是单词

例如 nihao hello world 都是单词

字符组

a-z:代表任意单个小写字母

\^a-z:只要单个非小写字母的其他任意字符

A-Z:代表任意大写字母

0-9:代表任意单个数字 0-59 代表匹配 0-5 和 9

a-z0-9A-Z:代表任意字母或数字

a-z0-9A-Z_:代表任意字母数字下划线 即匹配单词字符

字符类

:lower: 等价于 a-z

:upper: 等价于 A-Z

:alpha:\] 等价于 A-Za-z 也等价于\[:lower:\]+\[:upper:

:digit: 等价于0-9

:alnum:\] 等价于 等价于0-9A-Za-z 也等价于\[:lower:\]+\[:upper:\]+\[:digit:

:xdigit: 匹配十六进制数字 0 1 2 3 4 5 6 7 8 9 a b c d e f (大写也行)

:blank: 匹配空格或制表符

:space: 匹配空格,制表符,换行符,换页符,垂直制表符,回车符等等所有空白符号

:punct: 匹配所有标点符号 ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ \\ ^ _ ` {}

:print: 可打印字符,等价于:alnum:+:punct:+空格

:graph:\] 圆形字符,即能展现字符颜色的符号,等价于\[:alnum:\]+\[:punct:

位置锚定

^ 匹配行首

$ 匹配行尾

\< 匹配单词开头处的位置

\> 匹配单词结尾处的位置

^ 内容 $ 用于匹配整行

^$ 匹配空行

表示次数

* 表示匹配前面的字符任意次,包括0次

.* 任意长度的任意字符

\? 匹配其前面的字符出现0次或1次 即可有可无

\+ 匹配其前面的字符出现最少1次 即:肯定会出现 =>1次

\{n\} 匹配前面的字符n次

\{m,n\} 匹配前面的字符m次 至多n次

\{,n\} 匹配前面的字符至多n次 ,<=n

\{n,\} 匹配前面的字符至少n次

扩展正则表达式

grep -E

egrep 默认使用的 扩展正则

表示次数

* 匹配前面字符任意次

? 0或1次

  • 1次或多次

{n} 匹配n次

{m,n} 至少m 至多n次

{,n} 匹配前面的字符至多n次

{n,} 匹配前面的字符至少n次

表示分组

() 分组

分组:() 将多个字符捆绑在一起,当作一个整体处理,如: \(root\)+

后向引用:\1,\2, ...

| 或者

a|b a或b C|cat C或cat (C|c)at Cat 或cat

grep

过滤

格式: grep 选项... 查找条件 目标文件

选项

-m 匹配m次后停止 grep -m 1 root /etc/passwd #多个匹配只取第一个

-v 取反

-i 忽略大小写

-n 显示匹配的行号

-c 统计匹配的行数

-o 仅显示匹配到的字符串

-q 静默模式 不输出任何信息 一般用于脚本

-A 打印后指定行

-B 打印前指定行

-C 前后各指定行

-e 实现多个选项间逻辑or关系 grep -e root -e bash /etc/passwd #包含root或者包含bash 的行

-w 匹配整个单词

-E 使用ERE 使用扩展正则

-F 不支持正则表达式 相当于 fgrep

-f file根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件

-r 递归目录,但不处理逻辑

-R 递归目录,但处理软连接

相关推荐
水木流年追梦9 小时前
大模型入门-大模型优化方法1
人工智能·学习·算法·机器学习·正则表达式
我是标同学9 小时前
qt的正则表达式使用
正则表达式
deepin_sir11 小时前
19 - 正则表达式
python·正则表达式
清风一徐14 小时前
python--正则表达式
正则表达式
来恩10031 天前
Java正则表达式
正则表达式
水木流年追梦2 天前
大模型入门-大模型分布式训练2
开发语言·分布式·python·算法·正则表达式·prompt
水木流年追梦2 天前
大模型入门-大模型分布式训练1
开发语言·分布式·python·算法·正则表达式·prompt
我材不敲代码4 天前
Python 正则表达式实战总结
数据库·python·正则表达式
水木流年追梦4 天前
大模型入门-大模型的推理策略
开发语言·python·算法·正则表达式·prompt
水木流年追梦4 天前
大模型入门-DPO 直接偏好优化
人工智能·学习·算法·机器学习·正则表达式