Linux文本处理工具:
    文本搜索

globbing:
            *:p*d

/etc/passwd: root

grep, egrep, fgrep

Global search REgular expression and Print out the line.

文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行。

语法格式:
            grep [option]... 'PATTERN' FILE...

--color=auto

正则表达式:
            是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能;
                元字符:不表示其字面意义,而用于额外功能性描述

正则表达式:正则表达式引擎

基本正则表达式:grep
            扩展正则表达式: egrep, grep -E
            fgrep: fast, 不支持使用正则表达式

基本正则表达式的元字符:
            字符匹配:
                .: 匹配任意单个字符
                []: 匹配指定范围内的任意单个字符
                    [0-9], [[:digit:]]
                    [a-z], [[:lower:]]
                    [A-Z], [[:upper:]]
                    [[:space:]]
                    [[:punct:]]
                    [[:alpha:]]
                    [[:alnum:]]
                [^]:
            次数匹配元字符:用于实现指定其前面的字符所能够出现的次数
                *: 任意长度,它前面的字符可以出现任意次
                    例如:x*y
                        xxy, xyy, y, 
                \?: 0次或1次,它前面的字符是可有可无的
                    例如:x\?y
                        xy, y, ay
                \{m\}: m次,它前的字符要出现m次
                    例如:x\{2\}y
                        xy, xxy, y, xxxxy, xyy
                \{m,n\}: 至少m次,至多n次
                    例如:x\{2,5\}y
                        xy, y, xxy
                \{m,\}:至少m次
                \{0,n\}: 至多n次

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

工作于贪婪模式:尽可能多的去匹配
            位置锚定:
                ^: 行首锚定;
                    写在模式最左侧
                $: 行尾锚定:
                    写在模式最右侧
                ^$: 空白行

不包含特殊字符的连续字符组成的串叫单词:
                \<: 词首,出现于单词左侧,\b
                    \<char
                \>: 词尾,出现于单词右侧, \b
                    char\>
            分组:
                \(\)
                    例如:\(ab\)*
                    分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,之后可被引用

引用:
                    例如\(ab\(x\)y\).*\(mn\)
                        有编号:自左而后的左括号,以及与其匹配右括号
                        \(a\(b\(c\)\)mn\(x\)\).*\1

\#: 引用第n个括号所匹配到的内容,而非模式本身
                    例如:
                        \(ab\?c\).*\1

abcmnaaa
                            abcmnabc
                            abcmnac
                            acxyac

命令选项:
            -v: 反向选取
            -o: 仅显示匹配的字串,而非字串所在的行
            -i: ignore-case,忽略字符大小写
            -E: 支持使用扩展正则表达式
            -A #
            -B #
            -C #

练习:
            1、显示/proc/meminfo文件中以大写或小写S开头的行;
            # grep -i '^s' /proc/meminfo
            # grep '^[Ss]' /proc/meminfo

# grep -E '^(S|s)' /proc/meminfo

2、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;
            # grep -v "/sbin/nologin$" /etc/passwd | cut -d: -f1

3、显示/etc/passwd文件中其默认shell为/bin/bash的用户;
                进一步:仅显示上述结果中其ID号最大的用户;
            # grep "/bin/bash$" /etc/passwd | sort -t: -k3 -n | tail -1 | cut -d: -f1

4、找出/etc/passwd文件中的一位数或两位数;
            # grep "\<[0-9][0-9]\?\>" /etc/passwd
            # grep "\<[0-9]\{1,2\}\>" /etc/passwd

5、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;
            # grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf

6、显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;
            # grep "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit

7、找出netstat -tan命令执行结果中以'LISTEN'结尾的行;
            # netstat -tan | grep "LISTEN[[:space:]]*$"

8、添加用户bash, testbash, basher, nologin(SHELL为/sbin/nologin),而找出当前系统上其用户名和默认shell相同的用户;
            # grep "^\([[:alnum:]]\{1,\}\):.*\1$" /etc/passwd

9、扩展题:新建一个文本文件,假设有如下内容:
                He like his lover.
                He love his lover.
                He like his liker.
                He love his liker.
            找出其中最后一个单词是由此前某单词加r构成的行。
                \(l..e\).*\1r

扩展正则表达式:
            字符匹配:
                .
                []
                [^]
            次数匹配:
                *:任意次
                ?: 0次或1次
                +: 至少1次;
                {m}: 精确匹配m次
                {m,n}: 至少m次,至多n次
                {m,}
                {0,n}
            锚定:
                ^
                $
                \<, \b
                \>, \b
                ^$, ^[[:space:]]*$
            分组:
                ()

引用:\1, \2, \3

或者:
                a|b: a或者b
                    con(C|c)at
                        concat或conCat?
                        conC或cat

grep -E  'PATTERN' FILE...
            egrep 'PATTERN' FILE...

练习:使用扩展的正则表达式
            10、显示当前系统上root、fedora或user1用户的默认shell;
            # grep -E "^(root|fedora|user1):" /etc/passwd | cut -d: -f7

11、找出/etc/rc.d/init.d/functions文件中某单词后跟一组小括号“()”行;
            # grep -o -E "\<[[:alnum:]]+\>\(\)" /etc/rc.d/init.d/functions

12、使用echo命令输出一个路径,而后使用grep取出其基名;
                echo "/etc/sysconfig/" | grep -o -E "[[:alnum:]]+/?"

# echo "/etc/sysconfig/" | grep -o -E "[^/]+/?$" | cut -d/ -f1

13、找出ifconfig命令结果中的1-255之间的数字;
            # ifconfig | grep -o -E "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"

14、挑战题:写一个模式,能匹配合理的ipv4地址;
            1.0.0.1-239.255.255.255

redhat linux 文本处理工具笔记相关推荐

  1. linux的locate工具,linux文本查找工具之locate、find

    linux文本查找工具之locate.find 一.文件查找分为两类: 1.非实时查找:locate 2.实时查找:find 二.非实时查找:locate 非实时查找:查找速度快.非精准查找.模糊查找 ...

  2. Linux文本编译工具VIM详解

    Linux文本编译工具VIM详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.VIM概述 1>.vim简介 1>.vi: 全称Visual editor,即文本编 ...

  3. linux文本处理工具之grep与正则表达式语法

    Grep 介绍 Linux 文本处理三剑客之一,文件过滤工具(另外两剑客为sed:文本编辑工具,awk:文本报告生成器) 拥有着,根据用户指定的"模式"对目标文本逐行进行匹配检查: ...

  4. linux文本分析工具awk解读

    awk是一个强大的文本分析工具,相对于grep的查找.sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.awk把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. ...

  5. Linux文本处理工具和正则表达式

    成功不易,加倍努力! 1 文本编辑工具之神VIM 1.1命令或普通(Normal)模式的基本命令 1.2 插入(Insert)或编辑模式的基本命令 1.3 扩展命令模式基本命令 1.4 vim的寄存器 ...

  6. Linux文本搜索工具grep

    简介 grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文件内容,并把域值所匹配的行打印出来 grep命令语法结构 grep [options] '要搜索的字符串' filename gre ...

  7. RedHat Linux网络配置过程笔记

    在 Linux 系统中,TCP/IP 网络是通过若干个文本文件进行配置的,需要编辑这些文件来完成联网工作.在RedHat linux刚安装好后可以通过图形化界面来配置,以下介绍通过命令行配置网络 用c ...

  8. ceb 抽取 linux 工具,Linux 文本处理工具awk(示例代码)

    很好用的文本处理工具,尤其是变量跟控制语句,使用超赞. 个人理解大致流程如下 1.正常输出 # $0表示正行 默认是按照行分割 $1 $2 #----------------------------- ...

  9. 告别linux重复操作,学习linux文本处理工具,真正实用性入门教学linux基础命令之文本管理-----进阶sre第一阶段(重温linux基础06)

    文本处理工具 cut(实用) 取出文件中的列 cut 列分隔符 指定列 文件名 cut -d: -f1,3 /etc/passwd cut -d: -f1,3-5 /etc/passwd df -h ...

最新文章

  1. 为什么不应该重写service方法?
  2. Discuz常见大问题-如何使用云采集插件
  3. python中可以用中文作为变量-Python中用中文变量名、函数名,会影响性能吗?
  4. 【SoftwareTesting】Lab 2
  5. python知识:稀疏矩阵转换成密度矩阵
  6. docker前后端分离_Docker分离模式介绍
  7. 哑弹 图像处理检测_火箭军第三代哑弹处置系统排爆效率提升30%
  8. pdshell15 设计数据库_使用PowerDesigner 15对现有数据库进行生成图表结构
  9. 泰克示波器截屏软件-Tektronix示波器上位机-OpenChoice安装。示波器波形发文章论文
  10. bat替换文件中的字符串_JavaScript 中替换字符串的几种方法
  11. java web初始化实例_Struts2中实现web应用的初始化实例详解
  12. Python基础模块
  13. 绝招!谷歌浏览器(Chrome)各种版本支持Flash
  14. ArangoDB查询语言(AQL) 基本语法用法
  15. w ndows 10关机快捷键,win10关机有什么快捷键 win10关机快捷键及使用小技巧【图文】...
  16. Teams 的 Meeting App
  17. 001-三阶魔方-概述及层先法
  18. 为什么别人在微信卖东西不会被人拉黑
  19. Python代码解析数据
  20. 8ms入门教程| 安利!开发者用好这个嵌入式开发平台,准点下班不是梦!

热门文章

  1. 远程桌面控制公司内网电脑修改PPT
  2. NSIS脚本学习:判断版本并安装.NET Framework运行环境
  3. 大数据培训要多少钱?
  4. 2022年最佳加密软件:免费、付费、商业工具与服务
  5. 恭喜!胡哥官宣当爸,透露老婆非公众人物
  6. 分享63个JS幻灯片代码,总有一款适合您
  7. 卡拉兹猜想证明用python_科普:数学领域中的感觉像是“民科”的卡拉兹猜想
  8. Java码农进阶之路~StringBuilderStringBuffer全线修饰符
  9. 英语中谓语与表语关系
  10. python天气预报的功能介绍_python 实现天气预报功能