设为首页 收藏本站
查看: 720|回复: 0

[经验分享] Linux中的通配符和正则表达式

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-2 08:29:47 | 显示全部楼层 |阅读模式
                      通配符:
文件名统配是bash的特性之一,通配符一般用于文件名的匹配。
*   :任意长度的任意字符
?   :匹配任意单字符
[]  :匹配指定范围内的任意单字符
例:[abc], [a-z], [0-9], [0-9a-z]
[^] :匹配指定范围以外的任意单字符
例:[^0-9a-z]
字符集合:
[:space:] :所有空白字符
[:punct:] :所有标点符号
[:lower:] :所有小写字母
[:upper:] :所有大写字母
[:digit:] :所有数字
[:alnum:] :所有数字、字母
[:alpha:] :所有字母
Linux文本处理工具:
grep, egrep, fgrep(用于文件内容匹配,将文件名转换为字符窜也可以用这些工具进行搜索)
文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行。
正则表达式:

正则表达式是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能,一般用于文件内容匹配(通配符常用于文件名的匹配),将文件名转换为字符窜也可以用这些工具进行搜索。正则表达式又可分为基本正则表达式和扩展正则表达式。
1)基本正则表达式:grep
2)扩展正则表达式: egrep, grep -E
fgrep: fast, 不支持使用正则表达式(直接查找匹配的内容)
1)基本正则表达式的元字符:
字符匹配:
.  : 匹配任意单个字符(区别于通配符的*)
[]: 匹配指定范围内的任意单个字符
[0-9], [[:digit:]]
[a-z], [[:lower:]]
[A-Z], [[:upper:]]
[[:space:]]
[[:punct:]]
[[:alpha:]]
[[:alnum:]]
[^]:取反。例:[^[:alpha:]],匹配所有的非字母
次数匹配元字符:用于实现指定其前面的字符所能够出现的次数
*: 任意长度,它前面的字符可以出现任意次
例如:x*y
\?: 0次或1次,它前面的字符是可有可无的
例如:x\?y
\{m\}: m次,它前的字符要出现m次
例如:x\{2\}y
\{m,n\}: 至少m次,至多n次
例如:x\{2,5\}y
\{m,\}:至少m次
\{0,n\}: 至多n次
.*:任意长度的任意字符(工作于贪婪模式:尽可能多的去匹配

位置锚定:
^: 行首锚定;
写在模式最左侧
$: 行尾锚定;
写在模式最右侧
^$: 空白行
匹配单词(不包含特殊字符的连续字符组成的串):
\<: 词首,出现于单词左侧,\b
\<char(或者\bchar)
\>: 词尾,出现于单词右侧, \b
char\>(或者char\b
分组:
\(\)
例如:\(ab\)*
分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,之后可被引用
引用:
\#: 引用第n个括号所匹配到的内容,而非模式本身
例如:
\(ab\?c\).*\1    括号匹配到的内容是abc,所以后面\1只匹配abc
命令选项(grep):
-v: 反向选取
-o: 仅显示匹配的字串,而非字串所在的行
-i: ignore-case,忽略字符大小写
-E: 支持使用扩展正则表达式
-A # 显示前几行
-B # 显示后几行
-C # 显示上下几行
2)扩展正则表达式(无需转义字符):
字符匹配:
.
[]
[^]
次数匹配:
*     :任意次
?     :0次或1次
+     :至少1次;(相对于基本正则多出的一项)
{m}   : 精确匹配m次
{m,n} : 至少m次,至多n次
{m,}  :至少m次
{0,n} :最多n次
锚定:
^ :行首锚定;
$ :行尾锚定;
\<, \b(这里任然需要转义)
\>, \b(同上)
^$, ^[[:space:]]*$
分组:
()
引用:\1, \2, \3(同基本正则表达式)
注意:
a|b: a或者b
conC|cat:conC或cat
con(C|c)at:concat或conCat

扩展正则表达式的使用:
grep -E  'PATTERN' FILE...
egrep 'PATTERN' FILE...

                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-53008-1-1.html 上篇帖子: linux下文本查找命令及正则表达式 下篇帖子: linux下简单系统故障排除 表达式 通配符 Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表