文本处理工具:
    linux上文本处理三剑客
        grep,egrep,fgrep:文本过滤工具(模式:pattern)工具
            grep:默认支持的是基本正则表达式;-E支持扩展正则表达式,-F不支持正则表达式
            egrep:默认支持的是扩展正则表达式;-G支持基本正则表达式,-F不支持正则表达式
            fgrep:默认不支持正则表达式;-G支持基本正则表达式,-E支持扩展正则表达式
        sed:stream editor,流编辑器,文本编辑工具
        awk:linux上的实现为gawk,文本报告生成器(格式化文本)

正则表达式:Regual Expression,REGEXP
            由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能
                分两类:
                    基本正则表达式:BRE
                    扩展正则表达式:ERE

元字符:\(hello[[:space:]]\+\)\+

grep:Global search REgular expression and Print out the line
        作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查;打印匹配到的行
        模式:由正则表达式的元字符及文本字符所编写出的过滤条件

正则表达式引擎:

grep [OPTIONS] PATTERN [FILE...]
        grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

OPTIONS:
                --color=auto;对匹配到的文本着色后高亮显示
                -i:ignorecase,忽略字符的大小写
                -o:仅显示匹配到的字符串本身
                -v:--invert-match,表示不能够被模式匹配到的行
                -E:支持使用扩展的正则表达式元字符
                -q:--quiet,--silent,静默模式,不输出任何信息

-A #:after,同时显示能被匹配到的行的后#行
                -B #:before,同时显示能被匹配到的行的前#行
                -C #:context,同时显示能被匹配到的行的前后各#行

基本正则表达式的元字符:
                字符匹配:
                    .:匹配任意单个字符
                    []:匹配指定范围内的任意单个字符
                    [^]:匹配指定范围外的任意单个字符
                        [:dight:],[:lower:],[:upper:],[:alpha:],[:alnum:],[:punct:],[:space:]

匹配次数:
                    用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数;默认工作于贪婪模式
                    *:匹配其前面的字符任意次:0,1,多次
                        例如:grep "x*y"
                            abxy
                            aby
                            xxxy
                            yab
                    .*:匹配任意长度的任意字符
                    \?:匹配其前面的字符0次或1次,即其前面的字符是可有可无的
                    \+:匹配其前面的字符1次或多次,即其前面的字符要出现至少一次
                    \{m\}:匹配其前面的字符m次,精确匹配
                    \{m,n\}:匹配其前面的字符至少m次,至多n次
                        \{0,n\}:至多n次
                        \{m,\}:至少m次

位置锚定:
                    ^:行首锚定;用于模式的最左侧
                    $:行尾锚定;用于模式的最右侧
                    ^PATTERN$:用于PATTERN来匹配整行
                        ^$:空白行
                        ^[[:space:]]*$:空白行或包含空白字符的行
                    
                    单词:非特殊字符组成的连续字符(字符串)都称为单词
                        \<或\b:词首锚定,用于单词模式的左侧
                        \>或\b:词尾锚定,用于单词模式的右侧
                        \<PATTERN\>:匹配完整单词

分组及引用:                    
                    \(\):将一个或多个字符捆绑在一起,当作一个整体进行处理
                    xy*ab:表示y可以出现任意次
                    \(xy\)*ab:因为bash中括号有特殊意义,所以不能直接用括号,可以用\来把()进行转译

Note:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中,这些变量为:
                        \1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符
                        \2:模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符
                        \3:
                        ...

建立一个文本:
                            He loves his lover.
                            He likes his lover.
                            She likes her liker.
                            She love her liker.
                        ~]# grep "\(l..e\).*\1" lovers.txt
                    后向引用:引用前面的分组括号中的模式所匹配到的字符

shell脚本基础和grep文本处理工具企业应用3的更多相关文章

  1. shell脚本基础和grep文本处理工具企业应用2

    shell脚本编程:        编程语言的分类:        根据运行方式            编译运行:源代码-->编译器(编译)-->程序文件                优 ...

  2. shell脚本基础和grep文本处理工具企业应用4

    文本处理工具:    egrep:        支持扩展的正则表达式实现类似于grep文本过滤功能:grep -E        egrep [OPTIONS] PATTERN [FILE...]  ...

  3. shell脚本基础和grep文本处理工具企业应用1

      bash特性及bash脚本编程初步: 用户要跟计算机交互就需要有终端,比如:显示器.键鼠等,在终端有附着的接口程序 GUI:KDE.GNome.Xfce CLI:/etc/shells bash ...

  4. shell脚本学习指南-grep文本搜索命令-学习(3)

    1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全 ...

  5. [linux] grep 文本搜索工具

    grep [option] pattern file Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep全称是Global Regular ...

  6. shell脚本-基础

    shell脚本-基础 编程基础 程序是指令+ 数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell 程序提供了编程能力,解释执行. 计算运行二进 ...

  7. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  8. Shell脚本基础学习

    Shell脚本基础学习 当你在类Unix机器上编程时, 或者参与大型项目如k8s等, 某些框架和软件的安装都是使用shell脚本写的. 学会基本的shell脚本使用, 让你走上人生巅峰, 才怪. 学会 ...

  9. 什么是Shell?Shell脚本基础知识详细介绍

    这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell.有多少种Shell.一个Shell脚本代码实例,需要的朋友可以参考下 ...

随机推荐

  1. jQuery,javascript获得网页的高度和宽度【收藏】

    网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeight 网页可见区域宽: document.body.offset ...

  2. 11个顶级 JavaScript 日历插件

    参考链接:https://mp.weixin.qq.com/s?__biz=MzI3NzIzMDY0NA==&mid=2247487050&idx=1&sn=e1cf66726 ...

  3. sha256算法原理

    1. SHA256简介 SHA256是SHA-2下细分出的一种算法 SHA-2下又可再分为六个不同的算法标准 包括了:SHA-224.SHA-256.SHA-384.SHA-512.SHA-512/2 ...

  4. 数据结构 双向链表 C语言实现

    dlist.h #ifndef __dList_H #define __dlist_H typedef int Item; typedef struct Node *PNode; typedef PN ...

  5. [转帖]intel发布会之前,漫谈CPU核心架构:CCX、Ring Bus、Mesh

    intel发布会之前,漫谈CPU核心架构:CCX.Ring Bus.Mesh https://baijiahao.baidu.com/s?id=1607585351741429318&wfr= ...

  6. 批量删除redis的数据

    批量删除redis的数据 # redis-cli -h 192.168.1.17 -p 6379 keys "xiaolang_*"|xargs redis-cli -h 192. ...

  7. Oracle的查询-条件表达式

    给emp表中员工起中文名 select e.ename from emp e; select e.ename, case e.ename when 'SMITH' then '曹贼' when 'AL ...

  8. Spring中 如果该Service有多个实现类,它怎么知道该注入哪个ServiceImpl类?

    方法一:Controller中注入service的时候使用@Autowired自动注入,@Qualifier("beanId") 来指定注入哪一个. 方法二:Controller中 ...

  9. C++中用ODBC和ADO方式连接SQL数据库

    https://wenku.baidu.com/view/f01e4e762f3f5727a5e9856a561252d380eb2033.html

  10. URL去重与文章去重的一些基本方法

    一.url去重url存到数据库所有url放到set中(一亿条占用9G内存)md5之后放到set中(一亿条占用2,3G的内存)scrapy采用的就是类似方法bitmap方法(url经过hash后映射到b ...