grep与正则表达式

文本处理中比较强悍的三个工具是:grep、sed、awk。

其中grep主要作用是对于用户给出“模式”对文本逐行进行匹配检查,然后进行打印。

  模式:由正则表达式字符及文本字符编写的过滤条件

格式:grep [选项] [正则表达式字符]  文件

 常用的选项:

    -v:反向查找,显示没有被匹配的的行

    -i:不区分大小写

    -o:只显示查找的内容

    -n:显示匹配的行号

    -c:统计匹配的行数

    -q:不输出任何内容

    -A #:显示出查找到的内容的后#行

    -B #:显示出查找到的内容的前#行

    -C #:显示出查找到的内容的前后各#行

    -e:实现多个选项之间或的关系 例如:grep -e 'root' -e 'bash' file

    -w:整行匹配整个单词

    -E:使用此选项开启egrep


各个选项示例:

    -v选项:

示例:不显示f1文件中带有数字的行

[root@myhost testdir]# cat f1

ni hao 

aaaaaa123 

345 bbbbb

[root@myhost testdir]# grep -v [[:digit:]] f1

ni hao 


    -i选项:

示例:查找出文件中含有大小写a的行

[root@myhost testdir]# cat f1

ni hao 

AAA123 

345 bbbbb

[root@myhost testdir]# grep -i a f1 

ni hao 

AAA123


    -n选项:

示例:查找出含有root的字符串并显示行号 

[root@myhost testdir]# grep -n root /etc/passwd

1:root:x:0:0:root:/root:/bin/bash

11:operator:x:11:0:operator:/root:/sbin/nologin

    -o选项:

示例:在/etc/passwd文件中查找出root字符串

[root@myhost testdir]# grep -o root /etc/passwd

root

root

root

root


    -c选项:

示例:统计出/etc/passwd文件中以/bash/nologin结尾的一共有多少行

[root@myhost testdir]# grep -c "/sbin/nologin" /etc/passwd 

29


     -A选项:

示例:过滤出lisi用户所在行及后一行

[root@myhost testdir]# grep lisi -A 1 /etc/passwd

lisi:x:502:502::/home/lisi:/bin/bash

wangwu:x:503:503::/home/wangwu:/bin/bash


    -B选项:

示例:过滤出mysql系统用户行及前两行

[root@myhost testdir]# grep mysql -B 2 /etc/passwd

saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash


    -C选项:

示例:过滤出mail系统用户所在行及前后各一行

[root@myhost testdir]# grep mail -C 1 /etc/passwd

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

    

    -e选项:

示例:过滤出f1文件中包含数字或小写字母的行

[root@myhost testdir]# cat f1

ni hao 

AAA123 

345 bbbbb

[root@myhost testdir]# grep -e"[0-9]" -e "[a-z]" f1

ni hao 

345 bbbbb


     -w选项:

示例:查找出f1文件中的含有which单词的行

[root@myhost testdir]# cat f1

which

whichabc

abcwhich

[root@myhost testdir]# grep -w which f1

which

[root@myhost testdir]# grep which f1

which

whichabc

abcwhich

 

    -E选项


正则表达式篇:

 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为元字符)。模式描述在搜索文本时要匹配的一个或多个字符串其中有 些字符(元字符)不表示字符字面意义,而表示控制或通配的功能

 正则表达式分为两类:

             基本正则表达式:BRE

             扩展正则表达式:ERE

  元字符分类::字符匹配、匹配次数、位置锚定、分组 


字符匹配:

     . : 匹配任意一个字符

     [] :匹配指定范围内的任意一个字符

     [^] :匹配除指定范围外的任意一个字符

字符集:

     [:digit:] : 代表所有数字

     [:lower:] : 代表所有小写字母

     [:upper:] : 代表所有大写字母

     [:alpha:] : 代表所有大小写字母

     [:alunm:] : 代表所有字母和数字

     [:space:] : 代表空格和Tab

     [:punct:] : 代表所有标点符号

匹配次数:用在要指定的字符后,用于指定前面字符要出现的次数

   

     *:匹配前面字符任意次包括0次

     .*:匹配任意长度的任意字符

     \?:匹配前面的字符0次或一次

     \+:匹配前面的字符至少一次

     \{m\}:匹配前面字符m次

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

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

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

     

位置锚定:定位字符出现的位置

      

     ^:行首锚定,用于模式的最左侧

     $:行尾锚定,用于模式的最右侧

     ^模式$ :用于模式匹配整行

     ^$:表示空行

     \< 或 \b 词首锚定,用于锚定词的左侧

     \> 或 \b 词尾锚定,用于锚定词的右侧

        \<模式\> 用于锚定整个单词

分组:\(\):将一个或多个字符捆绑在一起,当作一个整体进行处理,如:\(root\)\+

   分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为:\1,\2,\3,…

   \1: 从左侧起,第一个左括号以及与之匹配右括号之间 的模式所匹配到的字符; 

        实例: \(string1\+\(string2\)*\) 

             \1: string1\+\(string2\)* 

              \2: string2 

    后向引用:引用前面的分组括号中的模式所匹配字符(而 非模式本身)


      



    






   


      



    


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

(0)
ZJMZJM
上一篇 2016-08-08 16:15
下一篇 2016-08-08

相关推荐

  • Linux运维学习历程-第七天-Linux文本工具及正则表达式

    文本处理工具: Linux文本处理三剑客:   grep、egrep、fgrep:文本过滤工具(模式:pattern)工具      grep:基本正则表达式 -E -F      egrep:扩展正则表达式 -G -F      fgrep:不支持正则表达式…

    Linux干货 2016-08-10
  • linux进程和计划任务

    内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、 安全功能等 进程管理:     系统优先级:数字越小,优先级越高    实时优先级: 99-0,值最大优先级最高    nice值:-20 到19 ,对应系统优先级100-139或99 Linux 内核:抢占式多任务  &nb…

    Linux干货 2017-03-23
  • Linux启动过程及系统初始化

    一、前言     服务器在正常的运行过程中,很少有重启的机会。在正常的情况下,也很少有出现启动异常的情况,但是在遭到了人为或者误操作的情况后,可能会出现启动异常的情况。为了加深学习系统启动流程,能够更加深入理解Linux系统的启动流程。总结了这篇文字。 二、简述启动流程     …

    Linux干货 2016-11-23
  • 文本处理工具三剑客之awk

    文本处理工具:grep,sed,awk awk:报告生成器,格式化文本输出 AWK: Aho ,Weinberger,Kernighan gawk:GNU awk gawk – pattren  scanning  and  processing  language 基本语法:gawk  [opt…

    Linux干货 2016-09-22
  • Ansible(From Wikipedia)

           Ansible 是一个免费的用于配置和管理计算机的的软件平台。它集成了软件部署,ad hoc任务执行,和管理配置的功能。它依赖Python2.4之后的版本和通过SSH或者PowerShell管理节点。模块工作在JSON格式,输出信息可以被任何编程语言再次编写。系统管理员可以使用YAML…

    Linux干货 2015-11-18
  • N23 9月底的

    1.linux下文件管理命令 cat 读取文件 或者连接显示touch 建立文件 改变时间 cp 复制文件 -f 强制复制 不论覆盖-r 连同子目录递归处理-l 建立硬链接-s 建立符号连接 rm 删除文件 -r 递归删除 连同子目录也一起干掉-f 强制 删除文件或者目录-d 直接删除目录 file 辨识文件类型 find 查找文件 whereis 查找文件…

    Linux干货 2016-09-25