正则介绍

    正则表达式,又称规则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

    许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。


grep/egrep

    grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。

    egrep 命令是一个搜索文件获得模式,使用该命令可以任意搜索文件中的字符串和符号,也可以为你搜索一个多个文件的字符串,一个提示符可以是单个字符、一个字符串、一个字、一个句子。


选项:



  • -c 行数

  • -i 不区分大小写

  • -n 显示行号

  • -v 取反

  • -A 后面跟数字,过滤出符合要求的行以及下面n行

  • -B 同上 ,过滤出符合要求的行以及上面n行

  • -c 同上,同时过滤符合要求的行以及上下各n行

  • -r 遍历所有子目录


grep/egrep 示例:

[root@localhost a]# grep -n 'root' /etc/passwd        显示行号

正则介绍_grep用法_grep

[root@localhost a]# grep -nv 'nologin' /etc/passwd    显示行号,筛选不含nologin字符

正则介绍_grep用法_egrep_02

[root@localhost a]# grep '[0-9]' /etc/inittab            //表示显示出数字

正则介绍_grep用法_grep_03

[root@localhost a]# grep -v '[0-9]' /etc/inittab    不选数字

正则介绍_grep用法_linux_04

[root@localhost a]# cat 1.txt
12121414
#141212414
#sdfsfefwfw
sfsfsfsf
123556
[root@localhost a]# grep -v '^#' /tmp/a/1.txt     显示开头不是#的行 //^ 表示 以什么开头
12121414
sfsfsfsf
123556

[root@localhost a]# grep '[^0-9]' /etc/inittab    [^] 表示非 即显示不包含数字

正则介绍_grep用法_centos7_05

[root@localhost a]# grep '[^a-zA-Z]' 1.txt    表示筛选数字

正则介绍_grep用法_linux_06

[root@localhost a]# grep '[r.o]' /etc/passwd    .表示任意一个字符

正则介绍_grep用法_egrep_07

[root@localhost a]# grep -n 'oo*' /tmp/a/1.txt   *表示重复左边n个字符 n:0个或多个

正则介绍_grep用法_centos7_08

[root@localhost a]# grep '.*' 1.txt        
o                                            *表示匹配左边的字符n个字符 即所有的字符
ro
roo
roo
rooo
roooo
rooooo
[root@localhost a]# grep 'user.*bash' /etc/passwd
user:x:1000:1000:user:/home/user:/bin/bash
[root@localhost a]# grep 'o\{2\}' /etc/passwd        //表示匹配2个o

正则介绍_grep用法_centos7_09

[root@localhost a]# egrep 'o{2}' /etc/passwd    //不加脱义符号

正则介绍_grep用法_centos7_10

[root@localhost a]# egrep 'o+' /etc/passwd            //+表示左边的字符的重复一次或多次

正则介绍_grep用法_linux_11

[root@localhost a]# egrep 'oo?' /etc/passwd            ?表示 左边的0 或者1个字符

正则介绍_grep用法_centos7_12

[root@localhost a]# egrep 'root|nologin' /etc/passwd        | 表示或

正则介绍_grep用法_grep_13

[root@localhost a]# egrep '(oo){1}' /etc/passwd

正则介绍_grep用法_egrep_14