码迷,mamicode.com
首页 > 其他好文 > 详细

grep命令及正则表达式的使用和介绍

时间:2015-11-09 19:06:48      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:linux   三剑客   表达式   

  grep是Linux系统中的一个文本流处理工具,用于在文件中搜寻所需要的内容。grep、awk、sed被称为文本处理三剑客。

  接下来我们看一下grep的使用格式及常用选项:

grep [options] PATTERN [FILE...]
      -v    #过滤匹配到的行
      -o    #仅显示匹配到的字符
      -i    #匹配字符时候忽略大小写
      -n    #显示行号
      -A n  #显示匹配到的行及上面的n行
      -B n  #显示匹配到的行及下面的n行
      -C n  #显示匹配到的行及上下各n行
      -E    #扩展的正则表达式;  = egep
      --color=auto:匹配到的字符串显示颜色

  了解了grep的使用格式和常用选项后,我们就可以是试试了:

1.复制/etc/passwd到/tmp目录;

[root@localhost tmp]# cp /etc/passwd /tmp/

2.找到包含root字符的行并将匹配到的字符串显示颜色;

[root@localhost tmp]# grep --color=auto "root" /tmp/passwd 
  root:x:0:0:root:/root:/bin/bash
  operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost tmp]# 

3.找到除了bash字符的行并显示行号;

[root@localhost tmp]# grep -vn "bash" /tmp/passwd
  2:bin:x:1:1:bin:/bin:/sbin/nologin
  3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
  .....还有很多,以你的为准.....
[root@localhost tmp]#

4.找到包含ntp字符的行及其上面的2行;

[root@localhost tmp]# grep -B2 "ntp" /tmp/passwd 
  vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
  pcap:x:77:77::/var/arpwatch:/sbin/nologin
  ntp:x:38:38::/etc/ntp:/sbin/nologin
[root@localhost tmp]# 

5.找到xfs字符的行及其上下的各1行;

[root@localhost tmp]# grep -C1 "xfs" /tmp/passwd
  nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
  xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

 好,如果没有问题的话我们继续。

  grep除了能使用以上的基本选项外,还可以使用正则表达式进行更加高级的模式匹配。这个正则表达式很简单,比grep还要简单,只需要背背就能记住了!

  正则表达式是由元字符组成的一种模式,可以完成更高级、更复杂的模式匹配。正则表达式分为基本的正则表达式和扩展的正则表达式,正则表达式是一个必须掌握的玩意儿,如果不会那你该脸红咯。

  正则表达式的元字符并不代表其字符意义,而是另有其他意义,我们看一下都有哪些,以及这些元字符的解释:

一、基本的正则表达式
根据功能的不同,基本正则表达式的元字符大概可以分为四个个类型:

1.字符匹配:
   .   #匹配任意单个字符
   []  #匹配集合内的任意单个字符
      [0-9]  :代表0-9
   [^] #匹配集合外的任意单个字符
2.次数匹配
   *       #匹配前面字符任意次
   \?      #匹配前面字符0次或1次
   .*      #匹配任意字符任意次
   \{m,n\} #匹配前面字符最少m次,最多n次
   \{m,\}  #匹配前面字符最少m次
   \{0,n}  #匹配前面字符最多n次
3.位置铆钉
   ^   #锚定行首
   $   #锚定行尾
   ^$  #锚定空白行
   \<  #锚定词首
   \>  #锚定词尾
   \b  #锚定词首和词尾 例如: \b单词\b
4.分组及引用
   \(\)  #扩住字符并给后面的引用
   \1    #引用第一个括号中的内容
   \2    #引用第二个括号中的内容
   
二、扩展的正则表达式
#扩展的正则表达式只比正则表达式多了"{m}、+、| " 而且有些地方不需要\转义

1.字符匹配:
   .   #匹配任意单个字符
   []  #匹配集合内的任意单个字符
   [^] #匹配集合外的任意单个字符
2.次数匹配
   *       #匹配前面字符任意次
   ?       #匹配前面字符0次或1次
   .*      #匹配任意字符任意次
   +       #匹配前面字符至少一次
   {m,n}   #匹配前面字符最少m次,最多n次
   {0,n}   #匹配前面字符最多n次
   {m,}    #匹配前面字符最少m次
   {m}     #匹配前面字符m次
3.位置铆钉
   ^   #锚定行首
   $   #锚定行尾
   ^$  #锚定空白行
   \<  #锚定词首
   \>  #锚定词尾
   \b  #锚定词首和词尾 例如: \b单词\b
4.分组及引用
   ()  #扩住字符并给后面的引用
   \1  #引用第一个括号中的内容
   \2  #引用第二个括号中的内容
   |   #代表或者的意思,例如a|b代表a或者b
需要说明一下关于[]的集合:
    []内可以是任意字符,如果是连续的,可以用-连接,例如0到9就是[0-9]、A到Z就是[a-z],匹配的时候只匹配其内部包含的任意单个字符。除了可以自己定义内部的匹配字符外,bash事前已经提供了一些字符集合:
    [:upper:]   #匹配任意单个大写字母;
    [:lower:]   #匹配任意单个小写字母;
    [:alpha:]   #匹配任意单个大小写字母;
    [:digit:]   #匹配任意单个数字;
    [:space:]   #匹配任意单个空格
    [:punct:]   #匹配任意单个标点符号
    
#以上的字符集合需要放到[]内,如[[:upper:]]

稍后添加使用实例。

本文出自 “萌Linux” 博客,请务必保留此出处http://minux.blog.51cto.com/8994862/1711142

grep命令及正则表达式的使用和介绍

标签:linux   三剑客   表达式   

原文地址:http://minux.blog.51cto.com/8994862/1711142

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!