文本三剑客之grep

简述grep

grep:

作用:文本搜索工具,根据用户制定的“(过滤模式)” 对目标文本逐行进行匹配检查;打印匹配的行;

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

grep [选项] PATTERN  [FILE]

常用选项:

–color=auto              #自动对匹配到的文本加颜色,默认红色

-i     #ignorecase,忽略字符大小写;

-o    #仅显示匹配到的字符串本身

-v    #反向匹配,显示不能被模式匹配到的行

-E    #支持使用扩展的正则表达式

-q    #静默模式,既不输出任何信息

#号表示数字

-A  #                 #  后#行

-B  #                #   前#行

-C  #                #    前后各#行

基本正则表达式元字符

字符匹配:

.  :匹配任意单个字符

[]: 匹配指定范围内内的单个字符

[^]:匹配非指定范围内的单个字符

[:digit:] 、[:lower:]、[:upper:]、[:alpha:]、[:alnuml:]、[:punct:]、 . . .

匹配次数:用在要指定其出现的次数的字符后面,用于限制其前面字符出现的次数;默认工作在贪婪模式

*:匹配前面的字符任意次,0,1,  多次;

例如: grep “x*y”

abxy

aby

xxxxxy

yab

.*:匹配任意长度的任意字符

\?:匹配其前面的字符0次或1次

\+:匹配其前面的字符1次或多次;前面的字符要出现至少一次;

\{m\}:匹配其前面的字符m次;m表示数字;

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

\{0,n}:至多n次

\{m,\}:至少m次

位置锚定:

^:行首锚定;用于模式最左侧;

$:行尾锚定;用于模式最右侧;

^PATTERN$:用PATTERN匹配整行;

^$:  空白行

^[[:space:]]*$:空行或包含空白字符的行;

单词:非特殊字符组成的连续字符串都成为单词;

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

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

\<PATTERN\>:精确锚定单词;

分组及引用:

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

\(xy\)*ab

分组括号中的模式匹配到的内容会被正则表达式引擎自动记录与内部的变量中,这些变量为:

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

\2

\3

He loves his lover
He likes his lover
She likes her liker
She loves her liker

[ root@centos7~]# grep “\(l..e\).*\1” test.txt
# 后向引用:引用前面的分组括号中的模式所匹配到的字符;

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

(1)
会飞的蜗牛会飞的蜗牛
上一篇 2018-04-20
下一篇 2018-04-20

相关推荐

  • 任务计划

    任务计划

    2018-06-05
  • 学习笔记(13)

    学习笔记(13)

    Linux笔记 2018-04-30
  • 基于lamp(源码)搭建blog

    lamp架构搭建blog(源码) 安装环境:2台主机,centos7.5 host1:192.168.67.115   httpd php host2:192.168.67.111   mariadb 安装包: apr-1.6.3.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.33.tar.bz2 php-7.1.18.tar…

    2018-07-02
  • 脚本练习

    1、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间tar Jcf /etc/ /data/ectbak-`date -d “-1 day” +%F-%H`.tar.xz30 1 * * 1-5 /root/Myscrip…

    Linux笔记 2018-05-08
  • 本地和网络yum创建

    本地源配置: 1 首先挂在光盘或镜像到虚拟机相关目录2 创建/etc/repos.d/xxx.d(在这之前先备份好原有的配置文件为xxx.d.bak,文件的配置如下图)3 清理旧yum仓库,生成新yum仓库信息缓存并查看 网络源配置: 1 下载新的CentOS-Base.repo 到/etc/yum.repos.d/ wget -O /etc/yum.rep…

    2018-04-08
  • nginx模块简介与编译安装

    nginx模块简介与编译安装示例

    2018-06-23