码迷,mamicode.com
首页 > 系统相关 > 详细

对于Linux正则表达式在sed awk 过滤中的深入浅出

时间:2017-08-12 10:32:29      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:linux 正则表达式 sed awk 过滤 的深入浅出

作为初学者,刚刚接触正则表达式,一定是一头雾水,不过没关系,用例子来说明。

==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*

一、先来看看正则表达式是什么:

正则表达式定义:

    简单的说,正则表达式就是一套处理字符串的规则和方法,以行为单位对字符串进行处理。通过特殊的符号的辅助,我们可以快速的过滤,替换某些特定的字符串。运维工作中,会有大量访问日志,错误日志,大数据,如何能够快速的过滤出我们需要的内容,这就需要正则表达式。

        awk  sed grep 三剑客想要工作的更高校,那一定离不开正则表达式的配合。我们想要玩好三剑客,首先要掌握正则表达式。


基础正则表达式,实际上就是一些特殊字符,我们赋予了他特定的含义。(BRE)

1)^word 表示以  开头

2)word$ 表示以  结尾

3).     代表且只能表示任意一个字符

4)\     转移符号,让有着特殊身份意义的字符,脱掉马甲,还原原型。

5)*     重复0个或多个前面的一个字符

6) .*    匹配所有字符。 ^.*以任意多个字符开头

7) []    字符集合的重复特殊字符的符号

8)[^word]匹配不是word字符串的内容

9)a\{n,m\}重复n到m次,前一个重复的字符  如果用egrep可以去掉斜线

  a\{n,\}重复至少n次,如果用egrep可以去掉斜线

  a\{n\} 重复n次如果用egrep可以去掉斜线

扩展的正则表达式:ERE

  1. +  重复一个或一个以上前面的字符

  2. ?重复0个或1个字符

  3. |  用或的方式查找多个符合的字符串

  4. ()找出“用户组”字符串

二、用例子来说明正则表达式的应用:

例一:根目录下有data目录,有以下命令结果

[root@linux-B /]# ls -ld /data

drwxr-xr-x 3 root root 4096 Aug 11 17:45 /data

他的权限为rwxr-xr-x即755,或者0755,要求用命令取得755或者0755这样的数字作为结果输出。

法一:

[root@linux-B /]# stat /data | sed -n ‘4p‘ | cut -c 10-13

0755

法二:

[root@linux-B /]# stat /data | sed -n ‘s#^.*s: (\(.*\)/drw.*$#\1#gp‘

0755

法三:

[root@linux-B /]# stat -c %a /data

755

法四:

[root@linux-B /]# stat /data | awk -F "[(/]" ‘NR==4 {print $2}‘

0755

法五:

[root@linux-B /]# ll -d /data | cut -c 2-10 | tr rwx- 4210 | awk -F "" ‘{print $1+$2+$3 $4+$5+$6 $7+$8+$9}‘

755



先写到这,后面还有例子待续,大家有方法也可以提。



本文出自 “Linux学习” 博客,请务必保留此出处http://heavenfish.blog.51cto.com/9841104/1955632

对于Linux正则表达式在sed awk 过滤中的深入浅出

标签:linux 正则表达式 sed awk 过滤 的深入浅出

原文地址:http://heavenfish.blog.51cto.com/9841104/1955632

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!