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
下一篇 2018-04-06

相关推荐

  • linux的基础命令

    基础命令

    2018-03-28
  • 迁移/home目录到新的分区上步骤

    迁移/home目录到新的分区上步骤 1、 安装一个新的硬盘 2、 查看新硬盘的设备名,如下图所示: 3、 在新硬盘上创建一个主分区,如下图所示: 4、 将新创建的分区格式化为ext4文件系统,并加上/home卷标,如下图所示: 5、 创建/home目录临时挂载点,并将分区挂载到临时挂载点上,如下图所示: 6、 切换单用户,将除了root用户之外的用户踢出,如…

    2018-04-27
  • 加密和安全

    安全机制 信息安全防护的目标保密性 Confidentiality完整性 lntegrity可用性 Usability可控制性Controlability不可否认性 Non-repudiation安全防护环节物理安全:各种设备/主机、机房环境系统安全:主机或设备的操作系统应用安全:各种网络服务、应用程序网络安全:对网络访问的控制、防火墙规则数据安全:信息的备…

    2018-06-02
  • grep与vim工具基本命令详解

    本文记录了些我在学习grep与vim时记录的一些笔记,希望可以帮到大家

    2018-04-06
  • Linux系统上命令的使用格式

    命令的语法通用格式: ~]# COMMAND OPTIONS ARGUMENTS ifconfig命令格式 ifconfig [interface] [options] | address   Echo命令格式 echo [options] …[string]… tty命令格式 tty [options] startx命令格…

    Linux笔记 2018-05-13
  • 自定义linux系统

    假如生活欺骗了你,不要悲伤不要心急,相信吧,快乐的日子终将来临!–海子

    Linux笔记 2018-03-26