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命令之date

    语法,选项,参数

    Linux笔记 2018-07-22
  • CENTOS开机流程

    开机流程 centos 5和6版本开机流程kernel==>rootfs(根文件系统)首先内核启动,然后加载根文件系统,然后启动init(第一个文件系统)它负责所有的程序的启动、管理、调用、删除等(这一切是运行在用户空间的)。 “`kernel:进程管理内存管理网络管理驱动程序文件系统安全功能 rootfs:glibc“` 库:…

    Linux笔记 2018-05-13
  • Homework_week4

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。       cp -a /etc/skel /home/tuser1       chmod 700 /home/tuser1 2、编辑/etc/group文件,添加组hadoop。       echo “ha…

    Linux笔记 2018-06-27
  • Mysql界面化工具Workbench安装指南

    此文档为mysql知识拓展,需要了解界面化的mysql的同学可以一览!

    2018-06-05
  • LVS虚拟服务器相关实验

    本节内容主要是是lvs相关性实验,及lvs健康性检查工具Ldirectord

    2018-07-05