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 递归目录,但处理软连接

相关推荐
吴声子夜歌5 小时前
正则表达式——边界
正则表达式
营养充电站13 小时前
C++23 新特性在 CLion 中的实战体验
macos·docker·jupyter·正则表达式
吴声子夜歌1 天前
正则表达式——字符组
正则表达式
天若有情6731 天前
自制浏览器端文本批量处理小工具,支持查找替换、内容删除、正则表达式,开箱即用
正则表达式
吴声子夜歌1 天前
正则表达式——简单的模式匹配
正则表达式
吴声子夜歌2 天前
正则表达式——前后查找
正则表达式
吴声子夜歌2 天前
正则表达式参考
正则表达式
吴声子夜歌2 天前
正则表达式——常见应用软件和编程语言中的正则表达式
正则表达式
吴声子夜歌2 天前
正则表达式——使用子表达式
正则表达式
吴声子夜歌3 天前
正则表达式——重复匹配
正则表达式