Day9 Linux正则表达式(Regular Expression)

Day9

1 正则表达式(Regular Expression)

1.1 简介

正则表达式使用字符串来描述、匹配符合句法规则的字符串,它能被被用来检索、替换符合这个模式的文本。

1.2 基本句法

符号作用示例
|表示选择boy|girl 可以匹配 boy 或者 girl。
+前面的字符必须出现至少一次(>=1)goo+gle 可以匹配 gooogle,goooogle 等
?前面的字符最多出现一次(0或1)colou?r,可以匹配 color 或者 colour
*都可以(0到多次)0*42 可以匹配 42、042、0042、00042
()定义模式字符串的范围和优先级gr(a|e)y 等价于 gray|grey、(grand)?father 匹配 father 和 grandfather
\将下一个字符标记为一个特殊字符、或一个原义字符n 匹配字符 n。\n 匹配一个换行符。序列 \ 匹配 \ 而 ( 则匹配 (
^匹配输入字符串的开始位置
$匹配输入字符串的结束位置
{n}n 是一个非负整数。只匹配确定的 n 次o{2} 不能匹配 Bob 中的 o,但是能匹配 food 中的两个 o
{n,}n 是一个非负整数。至少匹配 n 次o{2,} 不能匹配 Bob 中的 o,但能匹配 foooood 中的所有 o。o{1,} 等价于 o+。o{0,} 则等价于 o*
{n,m}m 和 n 均为非负整数,其中 n<=m。逗号和两个数之间不能有空格。最少匹配 n 次且最多匹配 m 次o{1,3} 将匹配 fooooood 中的前三个 o,o{0,1} 等价于 o?。
*匹配前面的子表达式零次或多次zo* 能匹配 z、zo 以及 zoo。* 等价于 {0,}
+匹配前面的子表达式一次或多次zo+ 能匹配 zo 以及 zoo,但不能匹配 z。+ 等价于 {1,}
?匹配前面的子表达式零次或一次do(es)? 可以匹配 do 或 does 中的 do。? 等价于 {0,1}
.匹配除 \n 之外的任何单个字符要匹配包括 \n 在内的任何字符,请使用类似 (.|\n) 的模式
(pattern)匹配 pattern 并获取这一匹配的子字符串。该子字符串用于向后引用。要匹配圆括号字符,请使用 ( 和 )。
x | y匹配 x 或 y。“z|food”能匹配 z 或 food。“(z|f)ood”则匹配 zood 或 food。
[xyz]字符集合(character class)。匹配所包含的任意一个字符。[abc] 可以匹配 plain 中的 a。其中特殊字符仅有反斜线 \ 保持特殊含义,用于转义字符。其它特殊字符如星号、加号、各种括号等均作为普通字符。脱字符^如果出现在首位则表示负值字符集合;如果出现在字符串中间就仅作为普通字符。连字符 - 如果出现在字符串中间表示字符范围描述;如果出现在首位则仅作为普通字符。
[^xyz]排除型(negate)字符集合。匹配未列出的任意字符。[^abc] 可以匹配 plain 中的 plin。
特殊符号
特殊符号说明
[:alnum:]代表英文大小写字母及数字,亦即 0-9,A-Z,a-z
[:alpha:]代表任何英文大小写字母,亦即 A-Z,a-z
[:blank:]代表空白键与 [Tab] 按键两者
[:cntrl:]代表键盘上面的控制按键,亦即包括 CR,LF,Tab,Del…
[:digit:]代表数字而已,亦即 0-9
[:graph:]除了空白字节(空白键与 [Tab] 按键)外的其他所有按键
[:lower:]代表小写字母,亦即 a-z
[:print:]代表任何可以被列印出来的字符
[:punct:]代表标点符号(punctuation symbol),即:",’,?,!,;,:,#,$…
[:upper:]代表大写字母,亦即 A-Z
[:space:]任何会产生空白的字符,包括空格键,[Tab],CR 等等
[:xdigit:]代表 16 进位的数字类型,因此包括: 0-9,A-F,a-f 的数字与字节
优先级

优先级为从上到下从左到右,依次降低

运算符说明
\转义符
(),(?😃,(?=),[]括号和中括号
*,+,?,{n},{n,},{n,m}限定符
^,$,\ 任何元字符定位点和序列
|选择

1.3 grep命令

参数说明
-EPOSIX 扩展正则表达式,ERE
-GPOSIX 基本正则表达式,BRE
-PPerl 正则表达式,PCRE
-b将二进制文件作为文本来进行匹配
-c统计以模式匹配的数目
-i忽略大小写
-n显示匹配文本所在行的行号
-v反选,输出不匹配行的内容
-r递归匹配查找
-A nn 为正整数,表示 after 的意思,除了列出匹配行之外,还列出后面的 n 行
-B nn 为正整数,表示 before 的意思,除了列出匹配行之外,还列出前面的 n 行
–color=auto将输出中的匹配项设置为自动颜色显示

1.4 sed命令

seq基本命令格式:
sed [参数]… [执行命令] [输入文件]…

参数说明
-n安静模式,只打印受影响的行,默认打印输入数据的全部内容
-e用于在脚本中添加多个执行命令一次执行,在命令行中执行多个命令通常不需要加该参数
-f filename指定执行 filename 文件中的命令
-r使用扩展正则表达式,默认为标准正则表达式
-i将直接修改输入文件内容,而不是打印到标准输出设备
sed -i 's/sad/happy/' test 
# 表示将test文件中的"sad"替换为"happy"

sed 执行命令格式:
[n1][,n2]command
[n1][~step]command

内容说明
n1,n2输入内容的行号
, (逗号)从 n1 到 n2 行
~ (波浪号)从 n1 开始以 step 为步进的所有行
command执行动作
#其中一些命令可以加入作用范围
sed -i 's/sad/happy/g' test
# g 表示全局范围
sed -i 's/sad/happy/4' test
# 4 表示指定行中的第四个匹配字符串
常用命令:
命令说明
s行内替换
c整行替换
a插入到指定行的后面
i插入到指定行的前面
p打印指定行,通常与 -n 参数配合使用
d删除指定行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值