Linux基础之正则表达式

正则表示式语法及在grep命令中的引用

1、grep: Global search REgular expression and Print out tht line

文本搜索工具,根据用户指定的模式对目标文本进行逐行匹配检查;打印匹配到的行

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

选项:

  • –color=auto 对匹配到的文本着色显示
  • -v 显示没有被匹配到的行
  • -i 忽略大小写匹配
  • -n 显示匹配到的行号
  • -c 统计匹配到的行总数
  • -o 仅显示匹配到的字符串
  • -q 静默模式,不输出任何信息
  • -A #: 同时显示匹配行后的#行
  • -B #: 同时显示匹配行前的#行
  • -C #: 同时显示匹配行前后的#行
  • -e 实现多选项之间的逻辑或关系(grep -e ‘cat’ -e ‘dog’ file)
  • -w 匹配整个单词 -E egrep -F fgrep

2、正则表达式

规则查看: man 7 regex

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

字符匹配:

  • . 匹配任意单个字符
  • [] 匹配指定范围内的任意单个字符   [^] 匹配指定范围外的任意单个字符
    1. [:lower:] 小写字母
    2. [:upper:]
    3. [:alpha:]
    4. [:digit:] 十进制数字
    5. [:alnum:] 字母和数字
    6. [:xdigit:] 十六进制数字
    7. [:blank:] 空白字符(空格和制表符)
    8. [:space:] 水平和垂直的空白字符
    9. [:cntrl:] 不可打印的控制字符
    10. [:graph:] 可打印的非空白字符
    11. [:print:] 可打印字符
    12. [:punct:] 标点符号

匹配次数:

  • * 匹配前面的字符任意次,贪婪模式:尽可能长的匹配 (.* 匹配任意长度的任何字符)
  • \? 匹配前面的字符0或1次
  • \+ 匹配前面的字符至少一次
  • \{n\} 匹配前面的字符n次  \{n,m\} 匹配前面的字符n-m次  \{,m\}  \{n,\}

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

  • ^ 行首;$ 行尾 (^$ 空白行; ^pattern$ 模式匹配整行 ;^[[:space:]]$ 空白行)
  • \<或者\b 词首锚定,用于单词模式的左侧
  • \<或者\b 词尾锚定,用于单词模式的右侧;单词边界:除了字母、数字、下划线_ (\<pattern\> 匹配整个单词)

分组: \(pattern\),将括号中的模式当作一组进行处理。分组括号中的模式匹配到的内容会被正则表式引擎记录于内部的变量中,这些变量的命名方式为:\1 \2 \3 。\1 表示从左侧起第一个左括号以及与之匹配的右括号之间的内容

后向引用:引用前面分组括号中模式匹配到的内容,并非模式本身

逻辑: \| 或

示例: 用到正则表达式的匹配模式需要用引号引起来

1、获得本机的ip地址

  • ifconfig eth0|grep “inet addr”|egrep -o “([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}”|head -1
  • ifconfig eth0|grep “inet addr”|egrep -o “.*Bcast:”|egrep -o “\b[[:digit:]\.]*\b”
  • 更准确的取法: ifconfig eth0|grep “inet addr”|egrep -o “(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])”

2、查找centos6中的系统用户,输出起用户名和uid

  • cut -d: -f1,3 /etc/passwd|grep -E “(\b[0-9]|[1-9][0-9]|[1-4][0-9][0-9])$”

3、查找centos系统的主版本号:

  • grep -o ” [0-9]” /etc/centos-release|tr -d  ” “

4、找出//etc/passwd中用户名和shell同名的行

  • grep ‘^\([^:]*\)\b.*\/\1$’ /etc/passwd

5、取路径的基名

  • echo “/etc/rc.d/init.d/” |egrep -o “[^/]*/?$”|tr -d “/”

6、取路径名

  • echo “/etc/rc.d/init.d/” |egrep -o “.*[^/]+”|egrep -o “.*/”|egrep -o “.*[^/]+”

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/86694

(0)
WadirumWadirum
上一篇 2017-09-09 16:50
下一篇 2017-09-09

相关推荐

  • 文件系统知一二

    文件系统知一二 What?文件系统是什么?     我们经常说文件系统,那么文件系统是什么东西呢?    计算机的文件系统是一种存储和组织计算机数据的组织结构。 常见的文件系统有哪些?           &n…

    Linux干货 2016-03-09
  • Linux基于PXE实现系统全自动无人值守安装

    前言 在生产环境中,我们时常会需要在多台客户端主机或服务器安装操作系统,如果每一台都去手动安装,费时费力,显然是不现实的。那么,如何高效的完成此类工作呢?文将讲解如何实现Linux系统的全自动无人值守安装。 提供PXE服务所需安装包 dhcp:动态主机配置协议,给客户端提供ip地址 tftp-server:tftp服务器端,提供系统安装所需文件 xinetd…

    Linux干货 2015-04-01
  • 管理用户组的命令

    用户账户 管理用户的命令及配置文件, Useradd,usermod,userdel,newusers,chpasswd,passwd,chage,chfn,chsh,id,su,finger Useradd:创建用户,         Useradd 选项 参数  &…

    Linux干货 2016-10-23
  • LVM组件详解&创建实验流程

       前言:根据前面的学习我们知道,一个磁盘一旦分完区并且格式化后,其空间大小是没有办法进行调整了。因此推出了LVM(Logical Volume Manager)逻辑卷管理机制,LVM重点在于可以弹性的调整文件系统的容量!并非在于性能和数据保全方面,需要文件的读写性能或者数据的可靠性,需要用到RAID。而LVM可以整合多个物理…

    Linux干货 2016-08-30
  • IPTABLES

    IPTABLES 软防火墙 防火墙是做什么的: 在生活中顾名思义防火墙即是为了防止火势、火情蔓延而设立的一道屏障,那么这道屏障在设置在那里后就可以保障内外两地将无情火分隔,保证我的内地不受外地的火情影响,从而安全的生活下去;查看下图帮助理解防火墙; 图1-1     图1-1可以看出当数据流量从外网主机访问内网主机时,…

    Linux干货 2017-03-15
  • 上古神器vim

    概述:     在之前的篇章中,我们介绍了一些文本的处理工具,如grep、sed、cut、sort等,但是那些工具的侧重点都在于有了现成的文本之后,对现有的文本进行一定条件的加工处理后,满足我们进一步对数据的要求。但是目前为止,还没有接触一款专业用来编辑文本的工具,本篇就来介绍一下Linux系统上自带的专业用来文本编辑…

    Linux干货 2016-08-10