【linux_笔记】Linux_文本查找(grep)及正则表达式

学习资源来自:www.magedu.com

学习记录过程中难免出现错误,如有发现,还望大神们指出。

示例操作部分有的与历史操作有关,如果先前的示例操作没有执行过的话,可能会有部分示例的操作无法执行。示例仅供参考。(练习题在附录)

文本查找:grep, egrep, fgrep    
    grep(Global Research): 使用基本正则表达式定义的模式来过滤文本的命令
                           根据模式搜索文本,并将符合模式的文本行显示出来。
    egrep = grep -E
    fgrep(fast grep): 不支持正则表达式                       
    Pattern: 由文本字符和正则表达式的元字符组合而成的匹配条件

 grep [options] PATTERN [FILE...]
        -i:忽略大小写
        --color:设定指定情况下显示的高亮颜色
        -v: 显示没有被模式匹配到的行
        -o:只显示被模式匹配到的字符串
        -E: 使用扩展正则表达式
        -A #: 追加显示匹配行后面的几行
        -B #: 追加显示匹配行前面的几行
        -C #: 追加显示匹配行前、后各几行
        示例:
            cd
            grep ‘root‘ /etc/passwd —— 显示匹配root的行
            grep -i ‘root‘ /etc/passwd —— 忽略大小写
            grep --color ‘root‘ /etc/passwd —— 匹配字符高亮
            alias grep=‘grep --color‘
            grep ‘root‘ /etc/passwd
            grep -v ‘root‘ /etc/passwd —— 显示未匹配到的行
            grep -o ‘root‘ /etc/passwd —— 只显示匹配字符串root
            grep -A 2 ‘^core id‘ /proc/cpuinfo —— 追加显示匹配行后面的几行

正则表达式:Basic REGEXP(基本),Extended REGEXP(扩展)

 基本正则表达式:Basic REGEXP
        元字符:
        .: 匹配任意单个字符
        []: 匹配指定范围内的任意单个字符
        [^]:匹配指定范围外的任意单个字符
            字符集合:
                [:digit:], [:lower:], [:upper:], [:punct:](标点符号)
                , [:space:], [:alpha:], [:alnum:]

次数匹配:

*: 匹配其前面的字符任意次(贪婪模式)    
            .*: 任意长度的任意字符
            \?: 匹配其前面的字符1次或0次
            \{m,n\}:匹配其前面的字符至少m次,至多n次
                \{1,\}:最少一次
                \{0,3\}:最多三次
        示例:    
            grep ‘r..t‘ /etc/passwd        
            nano test.txt
                a
                b
                ab
                aab
                acb
                adb
                amnb
                amnbamdb
            grep ‘a*b‘ test.txt —— 贪婪匹配
                b,ab,aab,acb,adb,amnb,amnbamdb
            grep ‘a.*b‘ test.txt
                ab,aab,acb,adb,amnb,amnbamdb
            grep ‘a\?b‘ test.txt —— 部分匹配
                b,ab,aab,acb,adb,amnb,amnbamdb
            grep ‘a\{1,3\}b‘ test,txt
                ab,aab
            grep ‘a.\{1,3\}b‘ test.txt
                aab,acb,adb,amnb,amnbamdb

位置锚定:指定字符出现的位置
            ^: 锚定行首,此字符后面的任意内容必须出现在行首
            $: 锚定行尾,此字符前面的任意内容必须出现在行尾
            ^$: 空白行
            示例:
                grep ‘r..t‘ /etc/passwd
                grep ‘^r..t‘ /etc/passwd —— 锚定行首是指定的字符串
                grep ‘w$‘ /etc/inittab —— 锚定行尾是指定的字符w
                grep ‘b..h$‘ /etc/passwd —— 锚定行尾是指定的字符串
                grep ‘^$‘ /etc/inittab | wc -l —— 显示空白行行数
                grep ‘[[:digit:]]$‘ /etc/inittab —— 锚定行尾是任意数字
                grep ‘[[:space;][:digit:]]$‘ /etc/inittab

\<或\b: 锚定词首,其后面的任意字符必须作为单词首部出现
            \>或\b: 锚定词尾,其前面的任意字符必须作为单词的尾部出现
            \<root\>:匹配完整的单词
            单词:以特殊字符为分隔符
            示例:
                nano test.txt
                    this is root
                    The user is mroot
                    rooter is a dog‘s name
                    chroot is a command
                    mrooter is not a word
                grep "root\>" test2.txt
                    this is root
                    The user is mroot
                    chroot is a command
                grep "\<root" teste.txt
                    this is root
                    rooter is a dog‘s name
                grep "\<root\>" teste.txt
                    this is root
        分组:\(\)
            \(ab\)* —— ab作为一个整体
            后向引用
            \1: 引用第一个左括号以及与之对应的右括号所包括的所有内容
            \2:引用第二个左括号以及与之对应的右括号所包括的所有内容
            \3:……
            示例:
            nano test3.txt
                He love his lover.
                She like her liker.
                He like his lover.
                She like him
            grep ‘l..e‘ test3.txt —— 显示匹配字符串的行
                He love his lover.
                She like her liker.
                He like his lover.
                She like him
            grep ‘l..e.*l..e‘ test3.txt
                He love his lover.
                She like her liker.
                He like his lover.
            grep ‘\(l..e\).*\1‘ test3.txt
                He love his lover.
                She like her liker.
            grep ‘\(l..e\).*\1r‘ test3.txt
                He love his lover.
                She like her liker.
            grep ‘\([0-9]\).*\1$‘ /etc/inittab
                —— 匹配中间出现任意数字并以该数字结尾的行
    
    扩展正则表达式:Extended REGEXP

字符匹配(与基本正则表达式相同):
            .:匹配任意单个字符
            []:匹配指定范围内的任意单个字符
            [^]:匹配指定范围外的任意单个字符
        次数匹配
            *: 匹配其前面的字符任意次
            ?:匹配其前面的字符一次或零次
            +: 匹配其前面的字符至少1次
            {m,n}:匹配其前面的字符至少m次,至多n次
        位置锚定(与基本正则表达式相同):
            ^:锚定行首
            $:锚定行尾
            \<:锚定词首
            \>:锚定词尾
        分组:
            ():分组
            \1, \2, \3, ...
        或者
            |: or
            C|cat:  C或cat
        示例:
        grep --color -E ‘^[[:space:]]+‘ /boot/grub/grub.conf

找出/boot/grub/grub.conf文件中1-255之间的数字;
        egrep --color ‘\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>‘ /boot/grub/grub.conf

\.
        匹配IP地址
        ifconfig | egrep --color ‘(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}
                                        \<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>‘

时间: 2024-10-07 01:26:29

【linux_笔记】Linux_文本查找(grep)及正则表达式的相关文章

linux下文本查找命令及正则表达式

马哥说了,学不好正则表达式不是linux的问题,是智商的问题. 下面我们来讨论一下在linux下面怎么查找文本,用什么方法查找文本,用什么命令查找文本,这里我们要用到的两个命令是 grep.egrep和fgrep.首先我们要了解一下什么是grep grep: grep的英文全称是global search REgular expression and print out the line. 意思就是说 全面搜索正则表达式并把行打印出来,全面搜索和把行打印出来我们都懂,正则表达式等会再讲,我们先来

正则表达式---文本查找

一.文本查找: grep: 根据模式搜索文本,并将符合模式的文本行显示出来. Pattern: 文本字符和正则表达式的元字符组合而成匹配条件 用法: grep [options] PATTERN [FILE...] -i:忽略大小写 --color:文本高亮 -v: 显示没有被模式匹配到的行 -o:只显示被模式匹配到的字符串 grep 'root' /etc/passwd 正则表达式:REGular EXPression, REGEXP 元字符: .: 匹配任意单个字符 []: 匹配指定范围内的

【linux_笔记】Linux_文件查找(find)详解&&特殊权限

学习资源来自:www.magedu.com 学习记录过程中难免出现错误,如有发现,还望大神们指出. 示例操作部分有的与历史操作有关,如果先前的示例操作没有执行过的话,可能会有部分示例的操作无法执行.示例仅供参考(练习题在附录). 文件查找: locate(不常用):非实时,模糊匹配,根据全系统文件数据库进行查找,速度快:# updatedb, 手动生成文件数据库(非常耗时) find:实时,精确,支持众多查找标准,遍历指定目录中的所有文件完成查找,速度慢: 命令格式:find 查找路径 查找标准

Linux基础之文本处理工具grep及正则表达式(附带egrep与grep的不同)

文本处理工具grep,正则表达式在Linux学习过程中很容易出现困惑与障碍的地方,这里分享下学习这方面内容的一些感受. grep Global search REgular expression and Print out the line 作用:文本搜索工具,根据用户指定的'模式(过滤条件)'对目标文本逐行进行匹配检查:打印匹配到的行: '模式':由正则表达式的元字符及文本字符所编写出的过滤条件. grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS]

利用grep与正则表达式快速精确实现文本通配

什么是grep? grep (global search regular expression(RE) and print out the line,其全称意义为全局搜索正则表达式,并打印出来.是一种功能强大,简单易用的文本搜索工具.它能根据其后指定的匹配方式匹配出文件中的文本,并把匹配到的那整行都打印出来. 在Linux中grep家族有三个成员,分别是grep,egrep和fgrep,其使用方法略有不同,其中egrep是grep的扩展,而fgrep则是在进行文本通配时把所有的字母都当做单词来处

grep 文本查找工具

简介 grep一种文本字符查找工具,会以行为单位查找可以匹配字符的行,并且默认情况下显示整行. 我们所要做的就是:书写特定的字符,来匹配我们想要的内容. 字符分为两类: 一就是普通的字符,二是一种我们称之为'元字符'的具有特殊意义的高上大字符. 而这种由普通字符或元字符所组合起来的,用于表达.匹配特定字符的字符串, 我们就称之为 "正则表达式""正则表示法"等等...  正则表达有很多规范,这里只说grep用的, 因为别的也不会. 对了要注意一点: 元字符跟通配符是

文本查找查找命令的grep 、egrep、fgrep用法的详解

一.学习目标 了解并能熟悉运用grep.egrep.fgrep命令. 二.学习内容 1.grep.egrep.fgrep命令的意思和用法格式 : grep:是使用基本正则表达式定义的模式来过滤文本的命令. # grep [options] PATTERN  [FILE,...] egrep  :是使用扩展正则表达式的模式来过滤文本的命令. # egrep [options] PATTERN  [FILE,...] fgrep:不支持正则表达式,是使用文字本身的意义的模式来过滤文本的命令. # f

grep文本查看工具及正则表达式

grep文本查看工具及正则表达式 grep:搜索及过滤文本工具: (根据用户所指定的"模式"搜索,过滤条件"对目标文件进行过滤性匹配):grep自带正则表达式引擎工具. 所谓模式:由正则表达式所得元字符及普通文本字符所编写出来的过滤条件"模式" grep:三种支持模式: grep:基本正则表达式 egrep:支持扩展正则表达式 fgrep :不支持正则表达式 三种支持模式因其可以(grep -E:切换扩展,egrep-G:切换基本,分别有以-F切换fgre

grep文本搜索工具与正则表达式

一.文本搜索工具grep (一)grep简介 Linux上常用的三个文本处理工具被人们称为Linux文本处理三剑客,他们分别是: 1.grep(egrep,fgrep):文本搜索工具,基于"pattern"对给定的文本进行搜索操作. 2.sed:stream editor,流编辑器,行编辑工具,文本编辑工具. 3.awk:GNU awk,文本格式化工具,文本报告生成器. 他们都是很优秀的文本处理工具.现在,我就重点介绍下grep. grep:global search regular