Linux文本处理三剑客及正则表达式

该章主要介绍正则表达式的使用方法

9

Linux 文本处理三剑客

grep:文本过滤工具(grep ;  egrep  ; fgrep)

grep :支持标准输入(例如:grep  abc  回车后输入内容,可检测出带有abc的行)

-v  :显示不被patter匹配的行

-i   : 忽略大小写

-n  :显示出行号

-c  :统计匹配的行的数量

-q  :静默模式,不输出任何信息   echo  $?   //可检测出是否查找到信息(0查找到)

-o  :直接显示匹配到的字符串

-A  :显示出包含关键字的后续几行

-B  : 显示出包含关键字的前几行

-C  : 显示出包含关键字的前后几行

-e  :代表或的关系(例如:-e  wang  -e  root   //过滤出wang或mage  的行)

-w  :匹配整个单词

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

-F   :(fgrep)  不支持正则表达式

 

正则表达式(REGEXP:(匹配的是字符串)

正则表达式引擎:采用不同算法,检查处理正则表达式的软件模块PCRE

man 7 regex    //查看正则表达式的格式

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

一.基本正则表达式(BRE

字符匹配

.        匹配任意单个字符

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

[^]     匹配指定范围外的任意一个字符        [:print:]       可打印字符

[:upper:]   任意大写字母            [:blank:]    空白字符(空格和制表符)

[:lower:]   任意小写字母            [:space:]    水平和垂直的空白字符

[:digit:]     任意数字                 [:cntrl:]   不可打印的控制字符(退格、删除、警铃)

[:alpha:]     任意大小写字母       [:puncct:]    标点符号

[:alnum:]   任意数字或字母        [:graph:]      可打印的非空白字符

grep  -o   [[:digit:]]   /etc/centos-release  |head –n1    //取出centos版本号6或7

 

匹配次数

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

.*   匹配任意长度的一个字符

\?   前面的字符重复0次或1次

\+   前面的字符至少1次以上

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

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

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

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

grep  -o  “ [0-9]\+”   /etc/centos-release  |head –n1    //取出版本号

ifconfig ens32  |grep  ” netmask”  | grep -o “[0-9.]\{7,\}” |head -n1   //取出ip地址

ifconfig ens32  |grep  ” netmask”  | grep -o “[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}” |head -n1

ifconfig ens32  |grep -o “inet [0-9.]\+”  |cut -d” ” -f2    //取IP地址

df | grep sda |grep -o “[0-9]\{1,3\}%”|grep -o “[0-9]\+” |sort -nr  |head -n1  //分区

 

位置锚定

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

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

^PATTERN$     用于模式匹配整行

^$   空行

^[[:space:]]*$    空白行

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

\>  或  \b  词首锚定,用于单词模式的右侧

\<PATTERN\>   匹配整个单词

grep  -v   ^[[:space:]]*$    f1     //过滤文件的空白行

 

分组:

\(\)  将一个或多个字符捆绑在一起,当做一个整体进行处理

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

反向引用:引用前面分组括号中的模式所匹配字符,并非模式本身

\|  或   (例如: a\|b     ;   (C\|c)at))

grep “^\(.*\):.*/\1$”  /etc/passwd    //取出前后单词一样的行

 

二.扩展正则表达式(ERE)

次数匹配

*    匹配前面字符任意次

?    0或1次

+   1次或多次

{m}   匹配m次

{m,n}:   至少m,至多n次

位置锚定

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

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

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

\>  或  \b  词首锚定,用于单词模式的右侧

分组:

()将一个或多个字符捆绑在一起,当做一个整体进行处理

后向引用:  \1  ,  \2

或 者: (例如: a|b     ;   (C|c)at))

echo /etc/rc.d/init.d/functions  |egrep -o  “[^/]*/?$”   //取基名

[0-9]       0-9

[1-9][0-9]      10-99

1[0-9][0-9]      100-199

2[0-4][0-9]       200-249

25[0-5]           250-255

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

(1)
qljqlj
上一篇 2018-04-06 20:02
下一篇 2018-04-06 20:28

相关推荐

  • 目录操作

    索引节点:  

    Linux笔记 2018-04-01
  • 第五周

    1、简述rpm与yum命令的常见选项,并举例 (1)什么是rpm? RPM 是RPM Package Manager(RPM软件包管理器)的缩写,可以实现安装、升级、卸载、查询和校验、数据库维护。 CentOS系统上的rpm命令管理程序: rpm –I 安装 -U 升级 -e 卸载 -q 查询 –builddb 数据库维护 (2)rmp的安装: …

    Linux笔记 2018-07-15
  • rpm以及yum基础

    第四周

    Linux笔记 2018-04-22
  • Linux笔记

    一、计算机系统(系统、硬件、)
    二、安装虚拟机

    2018-07-19
  • 第一周作业

    1、描述计算机的组成及其功能。
    2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    3、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
    4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
    5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
    6、请罗列Linux发行版的基础目录名称命名法则及功用规定。

    Linux笔记 2018-05-13
  • lvs(linux virtual server)、keepalived

    Linux Cluster: httpd: ab,  benchmark; 系统的扩展方式: Scale up:向上扩展; 提供性能更好的服务器替代现有的服务器; Scale out:向外扩展; 提供更多的服务器来满足同一个需求; 集群:将多台主机组织起来满足某一特定需求; 集群类型: 1、LB:Load Balancing, 负载均衡集群; 负载均衡器,调…

    2018-07-05