linux 字符串的通配符,漫谈Linux中的正则与通配符

正则表达式(Regular Expression)通常被用来检索、替换那些符合某个模式(规则)的文本。目前多种程序开发语言均支持常规的正则表达式。作为一名系统、运维工程师,正则表达在日常工作中也比较常用。因此,掌握常用的正则表达式显得十分重要。

在目前的Linux系统中,通常搭配三剑客(grep、sed、awk)来使用。目前,正则表达式主要分为三类:基本正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs)、扩展正则表达式(Extended Regular Expression 又叫Extended RegEx 简称EREs)、Perl的正则表达式(Perl Regular Expression 又叫Perl RegEx 简称PREs)。

通配符是由shell处理的, 它只会出现在 命令的“参数”里。当shell在“参数”中遇到了通配符时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。总之,通配符 实际上就是一种shell实现的路径扩展功能。在 通配符被处理后, shell会先完成该命令的重组,然后再继续处理重组后的命令,直至执行该命令。平时工作中我们对linux下的通配符和正则表达式模糊不清,本文比较简单的对二者进行了说明和比较。

1 正则表达式

## 用于处理大量字符串而定义,grep、sed、awk都支持正则表达式。

基础正则:

字符匹配:

.:任意单个字符

*:任意长度/次数的字符

[]:指定范围内的任意单个字符

[^]: 指定范围外的任意单个字符

元字符:

[[:upper:]]:任意大写字母

[[:lower:]]:任意小写字母

[[:digit:]]:任意一个数字

[[:alpha:]]:任意大小写字母

[[:punct:]]:标点符号

[[:space:]]:一个空格

[[:alnum:]]:任意一个字母或数字

行锚定:

^:行首

$:行尾

^$:空行

^[[:space:]]$:空白行

扩展正则:

次数匹配:

|:扩展正则,用于多个字符匹配

\+:匹配前面的字符1-任意次

\?:匹配前面的字符0-1次

\{n,m\}:匹配前面的字符最少n次,最多m次

\{,m\}:0-m次

\{n,\}:最少n次

\{n\}:匹配n个(次)

边界符:

\

\>:匹配字符串到此结束

\b或\bString\b:匹配字符串

\:匹配包含整个单词/字符串的行

分组匹配(sed常用):

\(First\) A \(Second\) \1或者\2

\(xy\(ab\)\) \1或者\2:1是匹配xy 2是匹配ab

[root@mod-200 ~]#echo "I wanna you"|sed -r 's/(.*)/\1 Shit/g'

I wanna you Shit

转义特殊字符(非正则):

\\:匹配\

\s:空格

\n:回车

\^,\$,\.:匹配^ $ .

2 通配符

一般用来匹配文件名的。

匹配文件名:

*:代表任意字符

?:代表任意单个字符

[ ]:匹配指定范围内的任意单个字符

其他通配符:

;:两个命令之间的分隔符

#:在配置文件里,注释效果

|:管道

$:变量前需要加的符号

/:路径分隔符,也是根

>或1>:输出重定向,覆盖原有数据

>>:追加输出重定向,追加在文件内容的尾部

<

' ':单引号,不具备变量置换功能,引号内所见即所得

" ":双引号,具备变量置换功能,解析变量后输出,不加引号相当于双引号

` `:反引号,两个``中间为命令,会先执行,等价$()

{ }:中间为命令去块组合或内容系列

! :逻辑运算中的“非”(not)

&&:and并且,当前一个指令执行成功时,执行后一个指令

||:or或者,当前一个指令执行失败时,执行后一个指令

..:代表上级目录

. :代表当前目录

~:当前用户的家目录

-:上一次的所在目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值