Shell篇:正则表达式

一,什么是正则?

       1,正则就是用一些具有特殊含义的符号组合到一起来描述字符或字符串的方法。

   2在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,下面我们就为大家介绍三种文本处理工具/命令:grep、sed、awk,它们三者均可以解释正则。

  二、grep

1,grep -n 显示行号;

2、grep -o  :只显示匹配的内容;

3、grep -q  :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容;

4、grep -l  :如果匹配成功,则只将文件名打印出来,失败则不打印

5、grep -A  :如果匹配成功,则将匹配行及其后n行一起打印出来

6 、grep -B  :如果匹配成功,则将匹配行及其前n行一起打印出来

7、grep -C  :如果匹配成功,则将匹配行及其前后n行一起打印出来

8、grep -c  :如果匹配成功,则将匹配到的行数打印出来

9、grep -E  :等于egrep,扩展

10、grep -i  :忽略大小写

11、grep -v  :取反,不匹配

12,、grep -w:匹配单词

 三、grep种类

grep
fgrep
pgrep
egrep

正则介绍

^ 行首

$ 行尾

. 除了换行符以外的任意单个字符

* 前导字符的零个或多个

.* 所有字符

[] 字符组内的任一字符

[^] 对字符组内的每个字符取反(不匹配字符组内的每个字符)  

^[^] 非字符组内的字符开头的行

[a-z] 小写字母

[A-Z] 大写字母

[a-Z] 小写和大写字母

[0-9] 数字

< 单词头 单词一般以空格或特殊字符做分隔,连续的字符串被当做单词

> 单词尾

扩展正则 sed  加 -r 参数 或转义

grep 加 -E 或 egrep 或转义

AWK  直接支持 但不包含

{n,m} 可以使用--posix支持

[root@MiWiFi-R3-srv ~]#  awk '/ro{1,3}/{print}' /etc/passwd

[root@MiWiFi-R3-srv ~]#  awk --posix '/ro{1,3}/{print}' /etc/passwd
  sed -n '/roo?/p' /etc/passwd    sed -rn '/roo?/p' /etc/passwd  

? 前导字符零个或一个

+ 前导字符一个或多个

abc|def abc或def   

a(bc|de)f abcf 或 adef  

x{m}  

x出现m次 x{m,} 

x出现m次至多次(至少m次)

x{m,n} x出现m次至n次

原文地址:https://www.cnblogs.com/fengwu007/p/6600238.html