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文本查看及处理工具

    Linux中,日志和配置都使用文本来存储和修改,对文本的查看及处理是最基本也是最常用的操作之一。而文本处理工具中,有被称为Linux文本处理三剑客的grep、sed和awk,但不要激动,Linux文本三剑客另起文章来讲,本文先从一些经常用到的,功能简洁但非常实用的工具说起。 wc命令 cut命令 sort命令 uniq命令 diff命令 patch命令 tr…

    2018-05-06
  • 磁盘存储个文件管理

    设备文件I/O Ports:I/O设备地址一切接文件:调用函数open(), read(), write(), close()设备类型:块设备:block,存取单位”块”,磁盘字符设备:char,存取单位”字符”,键盘设备文件:关联至一个设备驱动程序,进而都够跟与之对应硬件设备进行通信设备号码:主设备号:标识设备类型次设备号:标识同一类型下的不同设备mkno…

    2018-04-25
  • 软硬链接

    软链接和硬链接的区别

    2018-03-31
  • 自签证书 配置到apache的httpd、nginx的 配置文件内测试

    算是一个小整理,我在这里转了好几天,整理一下适合刚刚开始迷惑的朋友

    Linux笔记 2018-05-27
  • 4.8整理

    根据教学顺序整理

    Linux笔记 2018-04-08
  • 在CentOS7上编译安装apache 2.4源码包,并启动此服务

    1 关闭firwalld systemctl stop firewalld systemctl disable firewalld 2 关闭SElinux setenforce 0 vim /etc/selinux/config 找到以SELINUX开头的那行,修改成SELINUX=disabled 以下就是脚本里的内容,执行就OK了 yum groupin…

    Linux笔记 2018-04-22