加入收藏 | 设为首页 | 会员中心 | 我要投稿 三门峡站长网 (https://www.0398zz.com.cn/)- 云连接、设备管理、智能边缘云、云防火墙、数据加密!
当前位置: 首页 > 教程 > 正文

正则表达式-shell

发布时间:2021-01-25 14:40:34 所属栏目:教程 来源:互联网
导读:正则表达式定义 正则表达式,又称正规表达式、常规表达式 使用字符串来描述、匹配一系列符合某个规则的字符串 简单来说,是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定字符串。 正则表达式组成 普通字符:大小写字母、数字、

正则表达式定义

正则表达式,又称正规表达式、常规表达式

使用字符串来描述、匹配一系列符合某个规则的字符串

简单来说,是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定字符串。

正则表达式组成

普通字符:大小写字母、数字、标点符号及一些其他符号

元字符:在正则表达式中具有特殊意义的专用字符

正则表达式的用途

正则表达式对于系统管理员来说是非常重要的,系统运行过程中会产生大量的信息,这些信息有些是非常重要的,有些则仅是告知的信息。身为系统管理员如果直接看这么多的信息数据,无法快速定位到重要的信息,如“用户账号登录失败”“服务启动失败”等信息。这时可以通过正则表达式快速提取“有问题”的信息。如此一来,可以将运维工作变得更加简单、方便。

正则表达式分类

基础正则表达式

扩展正则表达式

Linux中文本处理工具

支持基础正则表达式:grep;sed

支持扩展正则表达式:egrep;awk

基础正则表达式元字符

基础正则表达式是常用的正则表达式部分

除了普通字符外,常见到以下元字符


  1. ■   :转义字符,!、 n等     #让特殊意义的元字符作普通字符使用  
  2. ■ ^ :匹配字符串开始的位置  
  3. 例: ^a、 ^the、 ^#  
  4. ■ $ :匹配字符串结束的位置  
  5. 例: word$  
  6. ■  . :匹配除n之外的任意的一个字符  
  7.  例: go.d、 g..d  
  8. ■  * :匹配前面子表达式0次或者多次  
  9.  例: goo*d、 go.*d  
  10. ■ [list] :匹配list列表中的一个字符  
  11.  例: go[ola]d 、[abc]、 [a-z]、 [a-z0-9]  
  12. ■ [^list] :匹配任意不在list列表中的一个字符  
  13.  例: [^a-z]、 [^0-9]、 [^A-Z0-9]  
  14. ■ {n,m} :匹配前面的子表达式n到m次,有{n}、 {n,}、{n,m}三种格式  
  15.  例: go{2}d、 go{2,3}d、 go{2,}d  
  16.  注意:“o{1,}” 等价于 “o+”  ;“o{0,}” 则等价于 “o*” 

二、grep 命令

2.1 grep的使用规则:

  •  -n:表示显示行号
  •  -i :表示不区分大小写
  •  -v:表示反向过滤
  •  [ ]:查找集合字符

2.2 用法示例


  1. grep -n 'the' test.txt     #文件检索出带‘the’的行并显示行号  
  2. grep -vn 'the' test.txt   #文件反向检索出不带‘the’的行并显示行号  
  3. grep -n 'sh[oi]rt' test.txt  #文件检索出带‘short’或‘shirt‘的行并显示行号  
  4. grep -n 'oo' test.txt   #文件检索出至少带连续oo的行并显示行号  
  5. grep -n 'o{2}' test.txt   #文件检索出至少带连续oo的行并显示行号  
  6. grep -n 'o{2,}' test.txt   #文件检索出至少带连续oo的行并显示行号  
  7. grep -n '[^w]oo' test.txt   #文件检索出连续oo前面不带w的行并显示行号  
  8. grep -n '^[^w]oo' test.txt  #文件检索出除w外,任意*oo开头的行并显示行号  
  9. grep -n ' [^a-z]oo ' test.txt  #文件检索出连续oo前面不是小写字母的行并显示行号  
  10. grep -n '[0-9]' test.txt    #文件检索出包含数字的行并显示行号  
  11. grep -n '[^0-9]' test.txt  #文件检索出不包含纯数字的行并显示行号,非纯数字也会匹配  
  12. grep -n '[^#]' test.txt   #文件检索出不包含#的行并显示行号  
  13. grep -n '^the' test.txt  #文件检索出以‘the’开头的行并显示行号  
  14. grep -n ‘^[a-z] ' test.txt   #文件检索出以小写字母开头的行并显示行号  
  15. grep -n ‘^[A-Z] ' test.txt   #文件检索出以大写字母开头的行并显示行号  
  16. grep -n '^[^a-zA-Z]' test.txt   #文件检索出不以字母开头的行并显示行号  
  17. grep -n '.$' test.txt  #文件检索出以 . 号结尾的行并显示行号  
  18. grep -n '^$' test.txt   #文件检索出空行并显示行号  
  19. grep -n 'w..d' test.txt  #文件检索出带有w开头,d结尾,中间两个任意字符的行并显示行号  
  20. grep -n 'ooo*' test.txt  #文件检索出带有连续oo或两个0以上的行并显示行号  
  21. grep -n 'oo*' test.txt  #文件检索出带有o或一个0以上的行并显示行号  
  22. grep -n 'w.*d' test.txt   #文件检索出带有w开头,d结尾,中间任意字符也可中间什么也没有的行并显示行号  
  23. grep -n '[0-9][0-9]*' test .txt  #文件检索出带有数字的行并显示行号 

三、sed 工具

sed(StreamEDitor)

一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。

3.1 sed 工具使用规则

sed的工作流程

主要包括读取、执行和显示三个过程

读取: sed从输入流(文件、管道、标准输入)中读取一-行内容并存储到临时的缓冲区中(又称模式空间,pattern space)

执行: 默认情况下,所有的sed命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行。

显示: 发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

注意:默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。

 

(编辑:三门峡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读