Shell编程----系统通配符&&正则表达式&&扩展正则表达式区分

本文详细解析了系统通配符、基础正则表达式、扩展正则表达式及Shell元字符的使用方法与区别。通过具体示例介绍了不同元字符的功能,如*、?、{}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统通配符&&基础正则&&扩展正则区分

一:系统通配符

符号含义示例
*模糊匹配所有内容a*b,a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如 aabcb, axyzb, a012b, ab
{}生成连续的序列; 生成不连续的序列{1…10};{a…z};{1,2} ;{1…10…2}奇数序列;{2…10…2}偶数序列
?表示任意单个字符(同正则的.)a?b,a与b之间有且只有一个字符, 可以是任意
[list]匹配 list 中的任意单个字符a[xyz]b,a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如 axb, ayb, azb。
[!list]匹配除 list 中的任意单一字符a[!0-9]b,a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如 axb, aab, a-b。
{s1,s2,…}匹配 s1 或 s2 (或更多)中的一个字符串a{abc,xyz,123}b,a与b之间只能是abc或xyz或123这三个字符串之一

二:基础正则

元字符作用
^匹配输入字符串的开始位置。除非在方括号表达式中使用,表示不包含该字符集合。要匹配“”字符本身,请使用“”
$匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则“KaTeX parse error: Undefined control sequence: \n at position 6: ”也匹配‘\n或‘\r’。要匹配“”字符本身,请使用"\ $"
.匹配除“\r\n”之外的任何单个字符
\将下一个字符标记为特殊字符、原义字符、向后引用、八进制转义符。例如,‘n’匹配字符“n”。 ‘\n’匹配换行符。序列‘\ \’匹配“\”,而‘\ (’则匹配“(”
*匹配前面的子表达式零次或多次。要匹配“*”字符,请使用“\ *”
[]字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”
[^]赋值字符集合。匹配未包含的一个任意字符。例如,“[ ^abc ] ”可以匹配“plain”中“plin”中的任何一个字母
[n1-n2]字符范围。匹配指定范围内的任意一个字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意一个小写字母字符。注意:只有连字符(-)在字符组内部,并且出现在两个字符之间时,才能表示字符的范围;如果出现在字符组的开头,则只能表示连字符本身
{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 次

总结:{} 用于表示前一个字符出现的次数

​ {n,p} 用于输出偶数行(行数)

​ [] 表示集合,集合里取一个进行匹配

三:扩展正则

元字符作用与示例
+作用:重复一个或者一个以上的前一个字符 示例:执行“egrep -n ‘wo+d’ test.txt”命令,即可查询"wood" “woood” "woooooood"等字符串
作用:零个或者一个的前一个字符 示例:执行“egrep -n ‘bes?t’ test.txt”命令,即可查询“bet”“best”这两个字符串
|作用:使用或者(or)的方式找出多个字符 示例:执行“egrep -n ‘of|is|on’ test.txt“ 命令即可查询"of"或者"if"或者"on"字符串
()作用:查找“组”字符串 示例:“egrep -n ‘t(a|e)st’ test.txt”。“tast”与“test”因为这两个单词的“t”与“st”是重复的,所以将“a”与“e”列于“()”符号当中,并以“|”分隔,即可查询"tast"或者"test"字符串
()+作用:辨别多个重复的组 示例:“egrep -n ‘A(xyz)+C’ test.txt”。该命令是查询开头的"A"结尾是"C",中间有一个以上的 "xyz"字符串的意思

四: shell元字符

shell除了有通配符之外,由shell负责预先先解析后。将处理结果传给命令行之外。shell另一系列自己的其它特殊字符。

字符说明
=变量名=值,为变量赋值。注意=左右紧跟变量名和值,中间不要有空格
$变量值替换, 变 量 名 替 换 为 s h e l l 变 量 的 值 ; 为 避 免 在 文 本 连 接 时 混 淆 。 请 使 用 变量名替换为shell变量的值;为避免在文本连接时混淆。请使用 shell;使{变量名};$0…$9 代表shell文件的參数。
>prog > file 将标准输出重定向到文件。
>>prog >> file 将标准输出追加到文件。
<prog < file 从文件file中获取标准输入
|管道命令,例:p1 | p2 将p1的标准输出作为p2的标准输入
&后台执行命令。最大优点是无需等待命令执行结束,就能够在同一命令行下继续输入命令
()在子shell中运行命令
{}在当前shell中运行命令。或用在变量替换的界定范围(比如上面的${变量名}使用方法)。
;命令结束符。比如p1;p2表示先运行p1,再运行p2
&&前一个命令运行成功后,才继续运行下一个命令。例:p1 && p2 ;若p1运行成功后,才运行p2,反之,不运行p2;
||前一个命令运行失败后。才继续运行下一个命令。例:p1 || p2 ;若p1运行成功后。不运行p2,反之,才运行p2;
!运行历史记录中的命令
~home文件夹
字符说明
‘’单引号,硬转义。其内部全部的shell元字符、通配符都会被关掉。注意,硬转义中不同意出现’(单引號)。
“”双引,软转义,其内部仅仅同意出现特定的shell元字符($)用于变量值替换、`用于命令替换、\用于转义单个字符
“”双引,软转义,其内部仅仅同意出现特定的shell元字符($)用于变量值替换、`用于命令替换、\用于转义单个字符
\反斜杠,转义。去除其后紧跟的元字符或通配符的特殊意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值