标签: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
+ 重复一个或一个以上前面的字符
?重复0个或1个字符
| 用或的方式查找多个符合的字符串
()找出“用户组”字符串
二、用例子来说明正则表达式的应用:
例一:根目录下有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 过滤 的深入浅出
原文地址:http://heavenfish.blog.51cto.com/9841104/1955632