Linux中常用的正则表达式

时间 : 16-04-13 栏目 : Shell进阶 作者 : 老薛 评论 : 3 点击 : 1,489 次

元字符集的含义:

^                          只匹配行首

$                          只匹配行尾

*                          一个单字符后紧跟* 匹配0或多个此单字符

[ ]                        匹配[ ] 内字符,可以是一个单字符,也可以是字符序列还可以使用 – 号

\                           用来屏闭一个元字符的特殊含义。转义操作

.                           匹配任意单字符

Pattern\{n\}        匹配前面pattern出现次数 。N表示次数

Pattern\{n,\}m    含义同上,但次数最少为n

Pattern\{n,m\}    含义同上,但次数出现在n与m之间

7.1 使用句点匹配单字符

示例:匹配以beg开头中间任意一个字符然后跟着 n 可以这样写:beg.n

 

7.2  ^ 表示匹配以什么字符开头的字符序列

^001 表示匹配以001开头的字符序列

7.3 $匹配以指定的字符作行尾的字符序列

示例:假定要匹配以trouble 结尾的所有行操作为:

Trouble$

7.4 *表示单个字符或重复序列

(即表示一到多个)

7.5 使用[] 表示一个范围的查询

还可以加上- 表示一个字符串范围的。

如果要匹配任意一个数字可以用:[0 12 3456789]也可用[0-9]

7.6 使用\{\} 匹配模式结果出现的次数

如果要指定次数就需要用到这个了。

Pattern\{n\}        匹配前面pattern出现次数 。N表示次数

Pattern\{n,\}m    含义同上,但次数最少为n

Pattern\{n,m\}    含义同上,但次数出现在n与m之间

示例:

A\{2\B}              表示A出现了两次 即AAB

A\{4,\}B             表示A至少要匹配四次 即 AAAAB 或AAAAAAAB等

 

7.7 经常使用的正则表达式举例

^                          行首

$                          行尾

^[the]                  以the 开头行

[Ss]igna[lL]         匹配单词signal signal Signal SignaL

[may MAY]        包含may大写或小写字母的行

^USER$              只包含USER的行

[tty]$                            以tty结尾的行

\.                          带句点的行

^d..X..X..X                  对用户、用户组及其他用户组成员有可执行权限的目录

1.一个比较实用的正则表达式
匹配html的嵌入代码

<[^>]*>

匹配[....]的嵌入码
 \[[^]]\{1,\}\]

删除仅由空字符组成的行

sed '/^[[:space:]]*$/d' filename

匹配html标签

/\(<[^>]*>\)/例如:从html文件中剔除html标签

sed 's/\(<[^>]*>\)//g;/^[[:space:]]*$/d'  file.html

例如:要从下列代码中去除"[]"及其中包括的代码

[b:4c6c2a6554][color=red:4c6c2a6554]一. 替换[/color:4c6c2a6554][/b:4c6c2a6554]sed 's/\[[^]]\{1,\}\]//g' filename

匹配日期:

Month, Day, Year [A-Z][a-z]\{3,9\}, [0-9]\{1,2\}, [0-9]\{4\}2003-01-28 或 2003.10.18 或 2003/10/10 或 2003 10 10\([0-9]\{4\}[ /-.][0-2][0-9][ /-.][0-3][0-9]\)
匹配IP地址

\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)

匹配数字串

[-+]*[0-9]\{1,\} 整数[-+]*[0-9]\{1,\}\.[0-9]\{1,\}  浮点数

从字串中解析出两个子串(前2各字符和后9个字符)  

echo "WeLoveChinaUnix"|sed -e 'H;s/\(..\).*/\1/;x;s/.*\(.\{9\}\)$/\1/;x;G;s/\n/ /' We ChinaUnix

分解日期串  

echo 20030922|sed 's/\(....\)\(..\)\(..\)/\1 \2 \3/'|read year month day echo $year $month $day

本文标签

除非注明,文章均为( 老薛 )原创,转载请保留链接: http://www.bdkyr.com/shell/1671.html

Linux中常用的正则表达式:目前有3 条留言

  1. 沙发
    小帅
    Post: 2017-12-15 下午6:56

    可以考虑整点实例,那样更形象直接,还望采纳。

    • 老薛
      老薛
      Post: 2017-12-15 下午6:58

      有道理啊,采纳。

    • 老薛
      老薛
      Post: 2017-12-15 下午7:03

      7.2 ^ 表示匹配以什么字符开头的字符序列
      [root@centos6 xuekun]# cat iplist.txt
      192.168.15.12
      123.192.168.15
      182.168.192.168
      [root@centos6 xuekun]# grep “^192″ iplist.txt
      192.168.15.12

发表评论

4 + 0 = ?


博主微信号,很高兴为您提供帮助

随便看看

为您推荐

3