文本处理工具:
    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. Git(3):分支管理

    Git 分支管理 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作. 创建分支命令 $git branch <branch n ...

  2. 【转载】用jquery给select option 赋值

    var dataList = [ "6211125886667895", "6211125886667892", "6211125886667897& ...

  3. 前端学习(一) body标签(上)

    body标签中相关标签 主要内容: 字体标签:  h1~h6.<font>.<u>.<b>.<strong><em>.<sup> ...

  4. 并查集 --cogs456 岛国

    题目链接:http://cogs.pro:8081/cogs/problem/problem.php?pid=pNyNQiqge 思路: 基础是并查集,将两个相邻的岛算作一个集合,每次若合并成功,则N ...

  5. ImportError: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory

    该错误原因是libpython3.6m.so.1.0不存在 解决方案 1.查看/usr/lib/x86_64-linux-gnu/目录下是否存在libpython3.m.so.1.0文件,或者直接全盘 ...

  6. 深度学习之目标检测:非极大值抑制源码解析(nms)

    目标检测:nms源码解析 原理:选定一个阈值,例如为0.3,然后将所有3个窗口(bounding box)按照得分由高到低排序.选中得分最高的窗口,遍历计算剩余的2窗口与该窗口的IOU,如果IOU大于 ...

  7. Python 筛选前缀文件

    筛选某一文件下内具备某一前缀的文件: for file in files filename = os.path.listdir(file) if 'qianzhui--' in filename: # ...

  8. linux下nginx的学习

    安装参考菜鸟教程:https://www.runoob.com/linux/nginx-install-setup.html nginx文档官网: http://nginx.org nginx社区:h ...

  9. poj2299(归并排序求逆序对)

    题目链接:https://vjudge.net/problem/POJ-2299 题意:给定一个序列,每次只能交换邻近的两个元素,问要交换多少次才能使序列按升序排列. 思路:本质就是求逆序对.我们用归 ...

  10. vsphere6.7-虚拟机与ESXI时间同步

    环境介绍 esxi 6.7+vsphere6.7 需求配置 设置虚拟机时间与esxi时间同步.esxi时间与NTP服务器同步 配置方式 在esxi上开启NTP服务器时间同步,如下图: 修改虚拟服务器的 ...