正则表达式基础以及grep的简单使用

正则表达式基础以及grep的简单使用

 

1,定义

正则表达式是你所定义的模式模板,Linux可以用它来过滤文本。Linux工具(比如grep、sed、gawk)能够在处理数据时使用正则表达式对数据进行模式匹配。如果数据匹配模式,它就会被接受并进一步处理;如果数据不匹配,它就会被滤掉。

正则表达式基础以及grep的简单使用

2,正则表达式的原则

(1)正则表达式模式都区分大小写。(2)可以使用空格,数字。(3)空格和其他字符并没有什么区别。

3,特殊字符                                                                  

包括        * [  ] ^ $ ( ) \ + ? | { }   

       要使用特殊字符,必须转义,在转义字符时,需要在它前面加个特殊字符来告诉正则表达式引擎应该将接下来的字符当做普通的文本字符,这个特殊符号就是反斜线(\)。

4,锚字符                                                                   

        ^ 行首锚定

        $ 行尾锚定

正则表达式基础以及grep的简单使用

       \b  \b 匹配词首和词尾  

        \<     \> 匹配词首和词尾    

正则表达式基础以及grep的简单使用

5,grep 基本用法

       -v    取反,找出不包含关键字的行

       -i     忽略字符大小写

       -n    显示匹配的行号

       -c    统计匹配到的行数

       -o    仅显示匹配到的字符串

       -w   匹配整个单词

       -A   n匹配的前n行

       -B    n 关键字的后n行

       -C    n 关键字的前后各n行

正则表达式基础以及grep的简单使用

       -e    实现多个选项的逻辑或关系

正则表达式基础以及grep的简单使用

       -E     egrep   支持扩展的正则表达式

         -F     fgrep   不支持正则表达式

6,字符匹配规则

       .             配任意单个字符

       [abc]       匹配a,b,c中单个字符

       [^abc]     匹配除a,b,c之外的字符

       [:alnum:] 匹配数字和字符

       [:alpha:]  匹配英文大小写字母a-z,A-Z

       [:lower:]  匹配小写字母

       [:upper:]  匹配大写字母

       [:space:]  匹配空格

       [:digit:]   匹配十进制数字

7,匹配次数

       *     匹配前面的字符任意次数,0至正无穷

       .*    匹配任意字符任意次数

       \?     匹配前面字符0次或者1次

       \+    匹配前面字符至少1次

       \{n\}       配前面字符n次

       \{m,n\}   匹配前面字符出现m至n次

       \{,n\}      匹配前面字符最多出现n次

       \{n,\}      匹配前面字符至少n次

8,扩展正则表达式egrep  

 次数匹配,和基本正则表达式类似,就是少了转义字符(\)

*     匹配前面字符任意次

?    匹配前面字符0次或1次

+     匹配前面字符1次或多次

{m} 匹配前面字符m 次

{m,n}匹配前面字符m到n 次

9,使用管道(|

         管道允许你在检查数据时,用逻辑或方式指定正则表达式引擎要用的两个或者多个模式,如果任何一个模式匹配了数据文本,文本就通过,如果没有模式匹配,则数据流文本匹配失败。

正则表达式基础以及grep的简单使用

10,分组

 将匹配规则分成不同的组 使用 1 2 3..等数字去标识,便于后面使用同样规则的时候可以直接饮用

   \(root\)\+\1

   \(string1\+\(string2\)*\)

   \1  string1\+\(string2\)*

   \2  string2

eg.找出/etc/passwd用户名同shell名的行

   cat /etc/passwd | grep
“^\(\b[[:alnum:]]\+\b\):.*\1$”

   grep
“^\<\(.*\)\>.*\1$” /etc/passwd

cat /etc/passwd | egrep “^(\b[[:alnum:]]+\b):.*\1$”

正则表达式基础以及grep的简单使用

原创文章,作者:linux is not unix,如若转载,请注明出处:http://www.178linux.com/72968

(1)
linux is not unixlinux is not unix
上一篇 2017-04-09 19:22
下一篇 2017-04-09 20:04

相关推荐

  • 开篇

    新人报道

    Linux干货 2016-10-24
  • lvs——高可用集群

    技术简介: LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性 集群采用…

    Linux干货 2016-10-26
  • 第六周作业

    vim文本编辑器基本用法     基本模式:         编辑模式,命令模式    输入模式        末行模式:    …

    Linux干货 2016-09-19
  • N28-第二周

    1. Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
    2. bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
    3. 請使用命令行展開功能來完成以下練習:
    (1) 創建/tmp目錄下的a_c、a_d、b_c、b_d。
    (2) 創建/tmp/mylinux目錄下的bin、boot/grub、dev、etc/rc.d/init.d、etc/sysconfig/network-scripts、lib/modules、
    lib64、proc、sbin、sys、tmp、usr/local/bin、usr/local/sbin、var/lock、var/log、var/run目錄。
    4. 如何查看文件的元數據,其信息有哪些,分別表示什麼含意?如何修改文件的時間戳信息?
    5. 如何定義一個命令的別名?如何在命令中引用另一個命令的執行結果?
    6. 顯示/var目錄下所有以L小寫開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
    7. 顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
    8. 顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其他任意長度任意字符的文件或目錄。
    9. 在/tmp目錄下創建以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
    10. 複製/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
    11. 複製/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
    12. 複製/etc目錄下所有以L小寫或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。

    Linux干货 2017-12-14
  • 文本处理工具Sed及VIM的使用

    1.文本处理工具Sed   Stream Editor 行编辑器                            图1-1 sed帮助手册  用法:      se…

    Linux干货 2016-08-10
  • heartbeat实现高可用集群(2)

    [[ heartbeat v2 + crm ]] 环境 node1 192.168.1.35 node2 192.168.1.36 fip 192.168.1.81 daemon httpd ha web service ip httpd node1&2 # vim ha.cf crm on # cd # rpm -ivh heartbeat-gui…

    Linux干货 2017-11-03