正则表达式的用法

grep

grep的主要作用就是文本过滤,在Linux中还是很好用的,自我感觉学这个是很有意思的,也很有用,刚学的时候可能会感觉它的用法很简单,但是再往后学习,你会喜欢上这个命令的,因为它确实很方便,很强大,好好学习,细细品味,相信你会对grep这个强大的命令有更深刻的理解。下面介绍一下它的基本语法

  Global search REgular expression and Print out the line  (全局搜索正则表达式和打印行)
  作用:文本搜索工具,根据用户指定的“模式”对目标文件逐行进行匹配检查,打印匹配到的行  
  模式:由正则表达式字符及文本字符所编写的过滤条件  
  语法:grep [OPTIONS] PATTERN [FILE...]    
     eg:grep root /etc/passwd      grep `whoami` /etc/passwd      grep "$USER" /etc/passwd   
  选项:       
       -i:忽略字符大小写     
       -o:仅输出匹配到的字符串    
       -v:显示不被匹配到的行   
       -n:显示匹配到的行号      
       -c:显示匹配到的行数      
       -w:显示匹配到的整个单词      
       -e:现多个选项之间的逻辑或or关系     
       -AN #:显示匹配到的字符串#和之后的N行      
       -BN #:显示匹配到的字符串#和之前的N行      
       -CN #:显示匹配到的字符串#和它前后各N行

看了上面的介绍可能也不知道grep有哪些特别的地方,但是学完正则表达式,你会感觉grep和正则表达式在一起用真的好方便,功能很强大。虽然正则表达式刚开始学起来会有点晕,但是课下做点题,多动脑思考,相信你会有很大的收获的。下面的只是要记住,而且会用哦

正则表达式

1、 程序支持:grep,sed,awk,vim,less,nginx等
2、分两类:   基础正则表达式:BRE   扩展正则表达式:ERE
3、元字符(有特殊含义的字符)
    分类:  字符匹配、匹配次数、位置锚定、分组
4、使用man 7 regex可查看正则表达式的内容       
 《1》 字符匹配的正则表达式元字符:   
       .   匹配单个任意字符  
      []  匹配指定范围内的任意单个字符 
     [^] 匹配指定范围外的任意单个字符  
 [:alnum:] 字符和数字  
 [:alpha:] 代表任何英文大小写字符  
 [:lower:] 小写字母 
 [:upper:] 大写字母 
 [:blank:] 空白字符(空格和制表符)  
 [:space:] 水平和垂直的空白字符(比[:blank:]的范围广) 
 [:cntrl:] 不可打印的控制字符(退格、删除) 
 [:digit:] 十进制数字 
5.正则表达式 
 《1》:匹配次数:用在要指定的字符后面,用于指定前面的字符要出现的次数。 
     贪婪模式:尽可能长地匹配      
    *  匹配前面的字符任意次,包括0次   
    .*   匹配任意长度的任意字符   
    \?  匹配前面的字符0次或一次,需要加引号引起来。 
   \+  匹配前面的字符至少一次      
    \{n\} 匹配前面的字符n次          
  \{m,n\} 匹配前面的字符最少m次,最多n次   
   \{n,\} 匹配前面的字符最多n次        
    \{,n} 匹配前面的字符最少n次  
 《2》:位置锚定        
          ^   行首锚定,用于模式最左侧     
          $   行尾锚定,用于模式最右侧      
       ^PATTERN$  用户模式匹配整行     
        ^$      空行      
    [[:space:]]*$ 空白行,有Tab空格的行     
         \<     用于词首锚定,用于单词模式的左侧    
         \>     用于词尾锚定,用于单词模式的右侧      
      \<PATTERN\> 用于匹配整个单词 
        
 《3》:分组
      \(\)将一个或多个字符捆绑在一起,当做一个整体来处理  
          例如:\(root\)\+    
      分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, ...   
       \1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符   
       示例: \(string1\+\(string2\)*\)       
             \1 :string1\+\(string2\)*      \2 :string2

上面一大堆零碎的看起来确实有些头疼,但是不要刻意去死记硬背,做做下面的小练习,使用这些知识,相信在做题的时候你会掌握不少

练习:

1、显示/proc/meminfo文件中以大小s开头的行(要求:使用两 
种方法)

2、显示/etc/passwd文件中不以/bin/bash结尾的行

3、显示用户rpc默认的shell程序

4、找出/etc/passwd中的两位或三位数

5、显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行

6、找出“netstat -tan”命令的结果中以‘LISTEN’后跟任意多个空白字符结尾的行

7、添加用户bash、testbash、basher、sh、nologin(其shell为/sbin/nologin),找出/etc/passwd用户名同shell名的行

8、显示CentOS7上所有系统用户的用户名和UID

首先要知道系统用户ID是 0-999 的哦


9、利用df和grep,取出磁盘各分区利用率,并从大到小排序

一般都不会想到要过滤一下/dev/sda 这样的真正是磁盘分区的,所以下面的写法还是比较符合题意的

下面这个用到了正则表达式,而且思路也挺好,值得借鉴

做完这些小练习是不是感觉自己进步很大,所以学习Linux是一件很有意思的事,只要你认真、用心,相信你会收获很多的!

时间: 2024-10-04 15:46:10

正则表达式的用法的相关文章

JAVA正则表达式高级用法(分组与捕获)

正则表达式在字符串处理中经常使用,关于正则简单的用法相信有一点程序基础的人都懂得一些,这里就不介绍简单基础了.这里主要讲解一下在JAVA中实现了的正则的高级用法-分组与捕获.对于要重复单个字符,非常简单,直接在字符后卖弄加上限定符即可,例如 a+ 表示匹配1个或一个以上的a,a?表示匹配0个或1个a.这些限定符如下所示: X ?     X ,一次或一次也没有X *     X ,零次或多次X +     X ,一次或多次X { n }     X ,恰好 n 次X { n ,}     X ,

grep、egrep及相应的正则表达式和用法

一.grep及基本正则表达式 1.grep基本用法        grep  [OPTIONS]  PATTERN  [FILE...]     常用选项: --color=auto:对匹配到的文本着色后高亮显示: -i:忽略字符大小写: -o:仅显示匹配 到的文本自身: -v, --invert-match:反向匹配: -E:支持扩展的正则表达式: -q, --quiet,静默模式,不输出任何信息:   1)首先建立一个test.txt的文本文件   2)然后使用grep和各选项进行匹配搜索:

linux下grep、egrep及相应的正则表达式和用法

     linux下grep.egrep及相应的正则表达式和用法                       一.简介      Linux上文本处理三剑客(引用自马哥教育 ):  grep, egrep, fgrep:文本搜索工具:基于"pattern"对给定文本进行搜索操作:     sed:Stream EDitor,流编辑器,行编辑工具:文本编辑工具:     awk:GNU awk,文本格式化工具:文本报告生成器:         grep (缩写来自Globally se

Linux文本过滤搜索器grep与egrep的常用正则表达式与用法

grep家族中的grep及egrep的相应的正则表达式和用法. 1.grep家族是文本处理三大剑客之一.(grep,sed,awk) grep: (Global search REgular expression and Print out the line).其支持使用基本正则表达式. egrep:支持使用扩展正则表达式 fgrep:不支持使用正则表达式(一般在大型web网站日志搜索时所使用) grep的作用:过滤查找关键词并打印匹配的行. grep的用法: grep [选项] 匹配模式 [文

javaScript中有关正则表达式的用法总结

js中处理正则表达式的类:RegExp 用法: var reg=new RegExp("express"); 或者: var reg=/express/; js中常用的6个方法: test():是否存在 exec():返回查询值 match():得到查询的数组 search():返回搜索的位置 replace():替换 split():分割成数组 这些方法,里面的参数都是正则表达式. js中常用的4大类: 简单类.负向类.组合类.范围类. 简单类:/[123]qqqq/gi:表示开头必

grep一族正则表达式及用法

grep家族属于Linux上文本处理三剑客之一,说到这里我们就先说说其他那两个剑客: 其一sed:全称流编辑器,行编辑器,文本编辑工具由英文名Steam EDitor缩写而来; sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作: 其二 awk相比对与sad比较优秀,运行效率高,对格式化的文本处理能力超强.在其对数据分析并生成报告时,显得尤为强大;         sed & awk的比较: sed命令的功能同awk类似

正则表达式常用用法汇总 __西科大C语言

正则表达式,又称正规表示法.常规表示法.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 正则表达式,有木有人像我一样,学了好几遍却还是很懵圈,学的时候老明白了,学完了忘光了.好吧,其实还是练的不够,所谓温故而知新,可以为师矣,今天就随我来复习一下这傲娇的正则表达式吧. 为啥要有正则表达式呢?其

Linux中的grep、egrep及相应的正则表达式和用法

在Linux系统当中,处理文本有三个常用的工具,俗称文本处理三剑客,grep就是其中之一. grep是一种强大的文本搜索工具,它的全称是:Globally search a Regular Expression and Print.工作原理是基于正则表达式引擎按给定的"pattern"对文本进行搜索过滤操作,并把匹配的行打印出来.因此了解要grep的用法我们可以从两方面着手,1:grep命令的用法,2:正则表达式. 1,grep命令的使用方法 首先我们可以使用man命令查看一下grep

Linux中的正则表达式基本用法

正则表达式:模式匹配语言,有其自身语法和规则,其中最重要的是元字符,通常用单引号括起 使用greb匹配文本(greb基本用法是提供一个正则表达式和一个文件,但该文件中应该有此正则表达式的匹配项) grep : (global research print), 根据某个模式,搜索文本,并将符合模式的文本行显示出来. 模式 (pattern): 由文本字符和正则表达式的元字符组合而成的匹配条件. Greb选项 -i  使用提供的正则表达式,但不会强制区分大小写 -v  1.仅显示不包含正则表达式匹配