您的位置:首页 > 运维架构 > Linux

Linux正则表达式

2016-04-29 16:36 253 查看
了解Linux正则表达式之前,需要了解Linux中通配符和正则的区别:通配符主要用于bash环境,而正则大多数用于Linux三剑客(grep、sed、awk)等中…且Linux中的正则又和其他开发环境下的正则有所区别,咱们暂时研究的还只是Linux环境下的正则…
通配符基础
通配符描述示例
*任意多个字符find . *.sh
代表任意一个字符find . ?.sh
连续不同命令分隔ls m1;ls m2
#配置文件注释####crontab####
|管道符find . -type f -name "*.txt" | xargs rm -f
~用户的家目录oldboy~
-上一次操作目录su -
$变量符号$PATH
//
>重定向echo “linux”>oldboy.sh
>>追加重定向echo “linux”>>oldboy.sh
<输入xargs –n 2 <oldboy.txt
<<输入重定向xargs –n 2 <<oldboy.txt
单引号所见即所得echo ‘date’==>date
双引号变量置换echo “date”==>date
num=3
echo “$num”==>3
`相当于$()ls ==>oldboy.sh
echo `ls`==>oldboy.sh

{]内容序列touch m{1..10}
cp file{,.bak}
!取反find . -type f ! -name "*.sh"
&&并且&&
||或者||
正则表达式基础组成
正则表达式描述示例
^匹配行首^abc 匹配以abc开头的行
$匹配结尾def$ 匹配以def结尾的行
.任意一个字符a.c 匹配abc、adc等
\转义字符,还原字符本身含义\. 代表点本身
*重复0个或者多个前一个字符o* 代表0个o或者多个o
.*任意字符^.* 代表以任意字符开头
[abc]匹配字符集合里的任意一个字符[a-z][A-Z][0-9] 任意a-z,A-Z,0-9
[^abc]匹配不包含^后的所有字符[^abc] 不包含abc的所有字符
a\{n,m\}
a\{n,\}
a\{n\}
匹配重复n到m次a字符
重复至少n次
只重复n次
0\{0,3\} 0重复了0-3次
0\{3,\}重复至少3次0
0\{3\}只重复3次0
()创建一个用于匹配的子串ma(tri)?匹配max或maxtrix
扩展的正则表达式(grep –E 或者 egrep)
正则表达式描述示例
+匹配1个或者多个
(*是0个或者多个)
a+ 匹配1个到多个a
匹配0个或者一个
(.是只有一个)
a? 匹配0个a或者1个a
|同时过滤多个字符grep –E “3306|1521” /etc/services
元字符
元字符(meta character)是一种Perl风格的正则表达式,只有一部分文本处理工具支持它,并不是所有的文本处理工具都支持。
正则表达式描述示例
\b单词边界\bcool\b 匹配cool,不匹配coolant
\B非单词边界cool\B 匹配coolant,不匹配cool
\d单个数字字符b\db 匹配b2b,不匹配bcb
\D单个非数字字符b\Db 匹配bcb,不匹配b2b
\w单个单词字符(字母、数字与_)\w 匹配1或a,不匹配&
\W单个非单词字符\W 匹配&,不匹配1或a
\n换行符\n 匹配一个新行
\s单个空白字符x\sx 匹配x x,不匹配xx
\S单个非空白字符x\S\x 匹配xkx,不匹配xx
\r回车\r 匹配回车
\t横向制表符\t 匹配一个横向制表符
\v垂直制表符\v 匹配一个垂直制表符
\f换页符\f 匹配一个换页符
POSIX字符类
POSIX字符类是一个形如[:...:]的特殊元序列(meta sequence),他可以用于匹配特定的字符范围
正则表达式描述示例
[:alnum:]匹配任意一个字母或数字字符[[:alnum:]]+
[:alpha:]匹配任意一个字母字符(包括大小写字母)[[:alpha:]]{4}
[:blank:]空格与制表符(横向和纵向)[[:blank:]]*
[:digit:]匹配任意一个数字字符[[:digit:]]?
[:lower:]匹配小写字母[[:lower:]]{5,}
[:upper:]匹配大写字母([[:upper:]]+)?
[:punct:]匹配标点符号[[:punct:]]
[:space:]匹配一个包括换行符、回车等在内的所有空白符[[:space:]]+
[:graph:]匹配任何一个可以看得见的且可以打印的字符[[:graph:]]
[:xdigit:]任何一个十六进制数(即:0-9,a-f,A-F)[[:xdigit:]]+
[:cntrl:]任何一个控制字符(ASCII字符集中的前32个字符)[[:cntrl:]]
[:print:]任何一个可以打印的字符[[:print:]]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: