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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于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目录,有以下命令结果

[[email protected] /]# ls -ld /data

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

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

法一:

[[email protected] /]# stat /data | sed -n ‘4p‘ | cut -c 10-13

0755

法二:

[[email protected] /]# stat /data | sed -n ‘s#^.*s: (\(.*\)/drw.*$#\1#gp‘

0755

法三:

[[email protected] /]# stat -c %a /data

755

法四:

[[email protected] /]# stat /data | awk -F "[(/]" ‘NR==4 {print $2}‘

0755

法五:

[[email protected] /]# 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系列:grep过滤awk拆分sed替换的使用方法与区别

linux正则表达式

Linux学习(二十五)正则表达式awk

正则表达式及三剑客(grep,awk,sed)详解

Linux之三剑客

linux之正则表达式