grep(global search regular expression(RE) and print out the
line,周全搜索正则表明式并把行打字与印刷出来)是1种庞大的文书找寻工具,它能使用正则表明式寻觅文本,并把相称的行打字与印刷出来。

grep简介

文本管理3杀手之 grep,文本3剑客grep

grep 简介

  grep(Global search REgular expression and Print out the
line)是Linux上的文本管理叁徘徊花之1,其余三个是sed和awk.

  grep是文本寻觅工具,依照用户内定的pattern(由文本字符及正则表明式元字符编写的过滤条件)对目的文本逐行进行相配检查并打字与印刷出符合条件的行.

文本管理3徘徊花之,Linux三徘徊花之grep。  grep有七个本子:grep,egrep和fgrep. egrep是增加的grep,等同于grep
-E,fgrep是连忙grep,不援助正则说明式.

 

事先感到glob跟grep正则很一般,其实她们的不同还挺大:

  glob相配文件名,grep相配文件内容

  glob是壹体杰出,grep是有的相称

 

正则表明式(Regular Expression,在代码中常简写为regex、regexp或RE):

  正则表达式是对字符串(包罗常见字符(比如,a 到 z
之间的字母)和特殊字符(称为“元字符”))操作的1种逻辑公式,就是用事先定义好的1对特定字符、及那几个特定字符的结合,组成多个“规则字符串”,这几个“规则字符串”用来抒发对字符串的1种过滤逻辑。正则表达式是一种文本格局,方式描述在索求文本时要协作的一个或多少个字符串。

 

不等版本的grep对正则说明式的支撑有所不一致:

  grep:暗中同意是采取基本正则表明式(BRE)

  egrep:帮忙扩充的正则表明式(ERE)

  fgrep:不支持正则表达式(但搜索速度快)

 

grep命令:

  命令格式:

    grep [OPTIONS] PATTERN [FILE…]

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

 

  常用选项:

            –color=auto:对男才女貌到的文件着色高亮显示

            -i:忽略字符大小写

            -o:仅呈现相配到的文本本人(暗许展现相配到的公文整行)

            -v,–invert-match:呈现不能够被pattern相称到的行

            -E,–extened-regexp:援助扩展的正则表达式(ERE).也就是egrep命令

            -F,–fixed-strings:相当于fgrep命令

            -q,–quiet,–silent:静默形式,不出口任何新闻,取命令退出状态码时常用

            -G,–basic-regexp:支持选取基本正则表明式

            -P,–perl-regexp:扶助使用pcre正则表明式(辅助元字符繁多)

            -e PATTEOdysseyN,–regexp=PATTEXC60N:使用多形式

 

            -f FILE,–file=:FILE为每行李包裹涵了一个pattern的文件文件,即grep script,把形式写在2个文件里,通过读取文件(脚本文件),来合作

            -c:呈现总结相配到的行数

            -r,–recursive:对目录下具备文件里的源委听闻格局相称

 

            -A #,–after-context=#:表示展现相配到行的末尾#行

            -B #,–before-context=#:表示显示相配到行的眼下#行

            -C #,-#,–context=#:表示显示匹配到行的前后#行

 

  示例:

    # grep ‘root’ /etc/passwd:假设情势里有变量要用双引号

    # grep -v ‘root’ /etc/passwd:反向相配

    # grep -i ‘root’ /etc/passwd:忽略字符大小写

    # grep -o ‘root’ /etc/passwd:仅显示相配到的文书本人

    # grep -q ‘root’ /etc/passwd:静默格局

    # echo $? 取命令退出状态码时常用

 

  示例:(形式用引号引起来,有变量时要用单引号)

    # grep -e “r..t” -e “bash” /etc/passwd:使用多情势

    # grep -f /root/test/mypat
/etc/passwd:使用万分保存在文书里的情势

    # grep -A 1 “^[op]” /etc/passwd:显示相配到的行前面包车型客车一行

    # grep -B 2 “^[op]” /etc/passwd:展现相称到的行前边的两行

    # grep -C 1 “^[op]” /etc/passwd:突显相配到的行前后各壹行

 

主干正则表达式元字符:

  1、字符相配:

    .:匹配任意单个字符

    []:相称范围内的即兴单个字符

    [^]:相称范围外的单个字符

    [:digit:]:自便单个数字

    [:lower:]:任性单个小写字母

    [:upper:]:大4单个大写字符

    [:alpha:]:放4单个字母

    [:alnum:]:大4单个字母和数字

    [:space:]:放四单个空白字符

    [:blank:]:自便单个空格和tab

    [:punct:]:大4单个标点符号

    [:cntrl:]:大4单个调节符

    [:graph:]:大4单个能展现的暗号

    [:print:]:大4单个可打字与印刷符号

    [:xdigit:]:任意单个十陆进制字符

 

  示例

    # ifconfig | grep “r..”:r后跟多少个字符的行

    # ifconfig | grep -i
“i[a-z][a-z]”:不区分轻重缓急写,i后跟多少个假名的行

    # ifconfig | grep
“i[[:alpha:]][[:space:]]”:i后跟三个字母再跟二个空格的行

 

  二、次数相称:

    用在要钦命其现出的次数的字符前面,用于限制其目前的字符要出现的次数,暗中认可职业在肉山脯林形式

 

                    *:相称后面包车型大巴字符出现的任性次(0,壹或频仍)

                        grep “x*y”:只要有y就匹配

                            xxxyabc

                            yab

                            abcxy

                            abcy

                    .*:相称放肆长度的即兴字符,也就是glob中的*

                        grep
“x.*y”:在x和y之间可出现放四长度放肆字符即相称

                            xxxyabc

                            abcxy                   

                    \+:相配前边的字符至少三回(三回或频仍);\为转义符

                        grep “x\+y”:y此前务必出现3个x

                            xxxyabc

                            abcxy

                    \?:相配前边的字符0次或3回,即日前的字符可有可无

                        grep “x\?y”:只要有y就匹配

                            xxxyabc

                            yab

                            abcxy

                            abcy                   

                    \{m\}:相称其前面包车型大巴字符出现m次,m为非负整数

                        grep “x\{2\}y”:y前出现2次x就匹配

                            xxxyabc

                   
\{m,n\}:相称其前边的字符出现m次,m为非负整数;闭区间[m,n]

                    \{0,n\}:至多n次

                    \{m,\}:至少m次

 

    示例:

      # ifconfig | grep
“i[[:alpha:]]\{3\}”:相称i后跟2个字母的行

      # ifconfig | grep
“i[[:alpha:]]\{3,\}”:相称i后跟至少二个假名的行

 

  三、地方锚定:

           
限制使用方式寻觅文本,限制情势所相配到的公文只可以出现于目的文本的哪个岗位

 

    ^:行首锚定;用于格局的最左侧,^PATTETucsonN

    $:行尾锚定;用于情势的最右面,PATTE翼虎N$

    ^PATTE奥德赛N$:要让PATTERubiconN完全相称一整行

    ^$:相配空行;

    ^[[:space:]].*$:匹配空白行;

 

    示例

                    # grep “^r..t”
/etc/passwd:匹配r初阶后跟八个字符再跟t的行

                    # grep “l.\{3\}n”
/etc/passwd:相称l后跟3个字符再跟n的行

                    # grep “l.\{3\}n$”
/etc/passwd:匹配l后跟2个字符再跟n结尾的行

                    # grep “^l.\{3\}n$”
/etc/passwd:相称只可以是l初始后跟1个字符再跟n结尾的行

                    # grep “[[:space:]]\+”
/etc/passwd:相配至少接二连三出现一个空格的行

 

                    单词:非特殊字符组成的连接字符(字符串)都称为单词

 

                   
\<或\b:词首锚定,用于单词情势的右边手,格式为\<PATTERN,/bPATTERN

                   
\>或\b:词尾锚定,用于的承诺形式的左侧,格式为PATTE君越N\>,PATTERN\b

 

    示例

                    # grep “\<r..t”
/etc/passwd:相称单词词首:r后跟八个字符再跟t的的行

                    # grep “\<r..t\>”
/etc/passwd:相称单词:r后跟四个字符再跟t的行

                    # ifconfig | grep
“\<[0-9]\{3\}\>”:相配单词:三个数字

 

    更加多实例:

                    一、显示/etc/passwd文件中不以bash结尾的行

                        # grep -v ‘bash$’ /etc/passwd

 

                    二、寻觅/etc/passwd文件中的4位或3个人数

                        # grep ‘\<[0-9]\{3,4\}\>’
/etc/passwd

 

                   
叁、找寻/etc/grub二.cfg文件中,以致少三个空白字符起首,前面又跟了1非空白字符的行

                        # grep ‘^[[:space:]]\+[^[:space:]]’
/etc/grub2.cfg

 

                    四、找寻”netstat
-tan”命令的结果中,以‘LISTEN’后跟0或多少个空白字符结尾的行

                        # netstat -tan | grep
‘LISTEN[[:space:]]*$’

 

                    5、找寻“fdisk
-l”命令结果中,以/dev/后跟sd或hd及一个小写字母的行

                        # fdisk -l | grep ‘/dev/[sh]d[a-z]\>’

 

                    六、找寻“ldd /usr/bin/cat”命令的结果中的文件路线

                        # ldd /usr/bin/cat | grep -o
‘/[^[:space:]]\+’

 

  四、分组与引用:

                   
\(PATTERN\):将此PATTERAV四N相称到的字符当作2个不可分割的一体化举行拍卖

 

                   
注意:分组括号中的格局相称到的字符会被正则表明式引擎自动记录于个中变量中,这一个变量是\1,\2,\3,…

 

                    例如:pat1\(pat2\)pat3\(pat4\(pat5)pat6\)

 

                   
\n:情势中的第n个左括号以及与之相称的右括号之间的格局所相配到的字符串(不是形式,而是情势相称的结果)

                   
\一:表示第3组括号总的PATTEEnclaveN相称到的的字符串;上例:pat二

                   
\2:表示第三组括号总的PATTE兰德酷路泽N匹配到的的字符串;上例:pat肆\(pat5)pat6

                   
\叁:表示第三组括号总的PATTELacrosseN相配到的的字符串;上例:pat五

                    …

                    示例:

                    he love his lover

                    he like his lover

                    he love his liker

                    he like his liker

 

                    .*l..e.*l..er

                    \(l..e\).*\1r

 

      # grep -o ‘l..e.*l..er’
fenzu_pattern.txt:不可能成就规范相配

      # grep -o ‘\(l..e\).*\1r’
fenzu_pattern.txt:分组可形成标准相配

 

                    后向引用:引用前边的括号中的方式所相配到的字符串

 

egrep命令:

 

  命令格式

    egrep [OPTIONS] PATTERN [FILE…]

 

  命令选项:

    egrep的接纳与grep相同

 

      扩展正则表达式的元字符:不须要转义符

                字符相称:

                    .:相称放四单个字符

                    []:相称范围内的自由单个字符

                    [^]:相称范围外的单个字符

                    [:digit:]:任意单个数字

                    [:lower:]:放四单个小写字母

                    [:upper:]:大肆单个大写字符

                    [:alpha:]:任性单个字母

                    [:alnum:]:大四单个字母和数字

                    [:space:]:放肆单个空格

                    [:blank:]:任性单个空格和tab

                    [:punct:]:任性单个标点符号

 

                次数匹配:

                   
*:相称前边的字符(可有可无)出现的放6次(0,壹或频仍)

                    ?:相称前边的字符0次或3遍,即目前的字符可有可无

                    +:匹配前边的字符至少一回(贰回或频仍)

                    {m}:匹配其前面包车型大巴字符出现m次,m为非负整数

                    {m,n}:相称其前边的字符出现m次,m为非负整数

                    {0,n}:至多n次

                    {m,}:至少m次

 

                地点锚定:

                    ^:行首锚定;用于情势的最右侧,^PATTE猎豹CS陆N

                    $:行尾锚定;用于格局的最右边,PATTETucsonN$

                    ^PATTEEnclaveN$:要让PATTE奥迪Q三N完全合作一整行

                    ^$:相称空行

                   
\<,\b:词首锚定,用于单词形式的左边手,格式为\<PATTERN,/bPATTERN

                   
\>,\b:词尾锚定,用于的许诺形式的右手,格式为PATTEEscortN\>,PATTERN\b

 

                分组及引用:

                   
(pattern):分组,括号中的方式相称到的字符会被储存李碧华则表明式引擎内部的变量中

                    后向引用:\1,\2,\3,…

 

                或者:

                    a|b:a或者b

                    C|cat:表示C或cat

                    (C|c)at:表示Cat或cat

 

  egrep实例:

            一、显示/etc/passwd文件中不以bash结尾的行

      # egrep -v ‘bash$’ /etc/passwd

 

    2、寻觅/etc/passwd文件中的三人或几人数

      # egrep ‘\<[0-9]{3,4}\>’ /etc/passwd

 

    三、找寻/etc/grub二.cfg文件中,以致少1个空白字符初阶,前边又跟了一非空白字符的行

      # egrep ‘^[[:space:]]+[^[:space:]]’ /etc/grub2.cfg

 

    4、搜索”netstat
-tan”命令的结果中,以‘LISTEN’后跟0或多个空白字符结尾的行

      # netstat -tan | egrep ‘LISTEN[[:space:]]*$’

 

    伍、寻觅“fdisk -l”命令结果中,以/dev/后跟sd或hd及1个小写字母的行

      # fdisk -l | egrep ‘/dev/[sh]d[a-z]\>’

      # fdisk -l | egrep ‘/dev/(s|h)d[a-z]\>’

 

    陆、寻觅“ldd /usr/bin/cat”命令的结果中的文件路线

      # ldd /usr/bin/cat | egrep -o ‘/[^[:space:]]+’

 

    七、寻觅/proc/meninfo文件中,全体以大写或小写s开始的行,至少用二种办法贯彻

      # egrep “^(s|S)” /proc/meminfo

      # grep “^[sS]” /proc/meminfo

      # grep -i “^s” /proc/meminfo

 

    八、显示当前系统上root,centos,或slackware用户的连带新闻

      # egrep “^(root|centos|slackware)\>” /etc/passwd

      # egrep “^(root|centos|slackware):” /etc/passwd

 

    九、echo输出3个相对路线,使用grep抽出基名

      # echo /etc/passwd/ | egrep -o “[^/]+/?$”

 

    十、搜索ifconfig命令结果中的一-255里边的平头

      # ifconfig| egrep
“\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>”

 

    1一、增加用户bash、testbash、及nologin,需求前多个用户的暗许shell为/bin/bash,而后寻觅其用户名与shell一样的用户

      # egrep “^([a-z0-9]+)\>.*\1$” /etc/passwd

grep,文本3杀手grep grep 简介grep(Global search REgular expression and Print out the
line)是Linux上的文本管理3刺客之1,其它五个是…

grep简介

grep的两个汉子

  grep(Global search REgular expression and Print out the
line)是Linux上的文本管理三杀手之1,其余多个是sed和awk.

  grep(Global search REgular expression and Print out the
line)是Linux上的文本管理三徘徊花之一,其余七个是sed和awk.

grep

  grep是文件寻找工具,根据用户钦赐的pattern(由文本字符及正则表明式元字符编写的过滤条件)对目的文本逐行举行匹配检查并打字与印刷出符合条件的行.

  grep是文本找出工具,根据用户钦点的pattern(由文本字符及正则表明式元字符编写的过滤条件)对目标文本逐行举办相配检查并打字与印刷出符合条件的行.

行使方法:grep [OPTIONS] PATTERN [FILE…]

  • 常用[OPTIONS]选项:
    • –color=auto:对才子佳人到的文件着色呈现;
    • -v:突显不能被钦命的PATTE景逸SUVN匹配到的行;
    • -i:相称时大意字符大小写;
    • -o:仅呈现相配到的原委自身,而不出示匹配到的整行;
    • -q:静默方式,不出口任何音信;
    • -c:显示相配到的行的列数;
    • -n:展现相配到的行的行号;
    • -e:能够利用该选项相称多少个情势;
    • -b:在打印相称行后边打字与印刷该行所在的目录(从0伊始计数),一般和-o一齐行使;
    • -H:在展现符合范本样式的那一列此前,标示该列的文件名称;
    • -A NUMBE卡宴:呈现相称到的行及前边NUMBEPRADO行;
    • -B NUMBERAV四:彰显相称到的行及前边NUMBE哈弗行;
    • -C NUMBELAND:展现匹配到的行及前后NUMBEBMWX三行;
    • -E:使用扩展正则表达式,也正是选择egrep

# 匹配/etc/passwd中以三个字母开关的行
[root@oldboy68-23 ~]# grep --color=auto "^[[:alpha:]]\{3\}:" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  • 留意:grep使用正则表明式时,() {} ? + <>
    b都急需转义,而采纳选取-E也一贯利用上述的标识(除<>
    b以外),不用转义成\(\),所以越来越多时候利用命令egrep指令

  grep有七个版本:grep,egrep和fgrep. egrep是扩充的grep,等同于grep
-E,fgrep是不慢grep,不协助正则表明式.

  grep有五个本子:grep,egrep和fgrep. egrep是扩展的grep,等同于grep
-E,fgrep是急忙grep,不帮衬正则表明式.

egrep

也正是grep -E,上例中用egrep指令来操作如下:

[root@oldboy68-23 ~]# egrep --color=auto "^[[:alpha:]]{3}:" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin

相称/etc/passwd中用户名和用户shell同名的行

[root@oldboy68-23 ~]# egrep --color=auto "(^[^:]*\>).*\1$" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt

从前认为glob跟grep正则很相似,其实他们的界别还挺大:

从前感觉glob跟grep正则很相像,其实他们的分别还挺大:

fgrep

不应用正则表明式,直接用字面意思查找文件内容,成效越来越高

[root@oldboy68-23 ~]# fgrep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

  glob相称文件名,grep匹配文件内容

  glob相称文件名,grep相配文件内容

  glob是任何合营,grep是局地相配

  glob是全方位金童玉女,grep是部分相配

正则表明式(Regular Expression,在代码中常简写为regex、regexp或RE):

正则表明式(Regular Expression,在代码中常简写为regex、regexp或RE):

  正则表明式是对字符串(包涵常见字符(比如,a 到 z
之间的假名)和特殊字符(称为“元字符”))操作的1种逻辑公式,正是用事先定义好的1部分一定字符、及那几个特定字符的构成,组成八个“规则字符串”,那个“规则字符串”用来表述对字符串的壹种过滤逻辑。正则表达式是1种文本格局,格局描述在寻觅文本时要协作的3个或多少个字符串。

  正则表明式是对字符串(包含一般字符(比方,a 到 z
之间的假名)和特殊字符(称为“元字符”))操作的一种逻辑公式,正是用事先定义好的局地一定字符、及这几个特定字符的叁结合,组成1个“规则字符串”,那个“规则字符串”用来发挥对字符串的1种过滤逻辑。正则表明式是1种文本方式,形式描述在追寻文本时要合营的3个或四个字符串。

分裂版本的grep对正则表达式的协理有所差异:

分化版本的grep对正则表明式的支撑有所分歧:

  grep:暗许是选用基本正则表明式(BRE)

  grep:默许是采取基本正则表明式(BRE)

  egrep:支持扩充的正则表达式(ERE)

  egrep:补助扩大的正则表明式(ERE)

  fgrep:不援救正则表明式(但寻找速度快)

  fgrep:不扶助正则表达式(但寻觅速度快)

grep命令:

grep命令:

  命令格式:

  命令格式:

    grep [OPTIONS] PATTERN [FILE…]

    grep [OPTIONS] PATTERN [FILE…]

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

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

  常用选项:

  常用选项:

    –color=auto:对男才女貌到的公文着色高亮突显

    –color=auto:对金童玉女到的文本着色高亮展现

    -i:忽略字符大小写

    -i:忽略字符大小写

    -o:仅呈现相配到的文书自己(默许展现相配到的文本整行)

    -o:仅体现相配到的文书自个儿(默许呈现相称到的文本整行)

    -v,–invert-match:展现无法被pattern相配到的行

    -v,–invert-match:显示不能够被pattern相配到的行

    -E,–extened-regexp:扶助扩展的正则表达式(ERE).约等于egrep命令

    -E,–extened-regexp:支持扩充的正则表达式(ERE).约等于egrep命令

    -F,–fixed-strings:相当于fgrep命令

    -F,–fixed-strings:相当于fgrep命令

    -q,–quiet,–silent:静默方式,不出口任何新闻,取命令退出状态码时常用

    -q,–quiet,–silent:静默方式,不出口任何新闻,取命令退出状态码时常用

    -G,–basic-regexp:协助使用基本正则表明式

    -G,–basic-regexp:援救选用基本正则表达式

    -P,–perl-regexp:援助使用pcre正则表明式(协理元字符诸多)

    -P,–perl-regexp:扶助选拔pcre正则表明式(援助元字符很多)

    -e PATTEOdysseyN,–regexp=PATTESportageN:使用多格局

    -e PATTE揽胜极光N,–regexp=PATTE翼虎N:使用多格局

    -f FILE,–file=:FILE为每行包蕴了二个pattern的公文文件,即grep
script,把形式写在三个文书里,通过读取文件(脚本文件),来合营

    -f FILE,–file=:FILE为每行李包裹蕴了1个pattern的文书文件,即grep
script,把形式写在多个文书里,通过读取文件(脚本文件),来同盟

    -c:呈现总结相称到的行数

    -c:展现总结相称到的行数

    -r,–recursive:对目录下具备文件里的剧情据他们说情势相配

    -r,–recursive:对目录下具备文件里的情节据说情势相配

    -A #,–after-context=#:表示彰显相称到行的后边#行

    -A #,–after-context=#:表示显示相称到行的背后#行

    -B #,–before-context=#:表示突显相配到行的前边#行

    -B #,–before-context=#:表示展现相配到行的前方#行

    -C #,-#,–context=#:表示展现相配到行的前后#行

    -C #,-#,–context=#:表示突显相称到行的上下#行

  示例:

  示例:

    # grep ‘root’ /etc/passwd:要是格局里有变量要用双引号

    # grep ‘root’ /etc/passwd:假若格局里有变量要用双引号

    澳门金沙国际 1

    澳门金沙国际 2

    # grep -v ‘root’ /etc/passwd:反向相配,展现全数未有被相称的行

    # grep -v ‘root’ /etc/passwd:反向相称,显示全体未有被相称的行

    澳门金沙国际 3

    澳门金沙国际 4

    # grep -i ‘bash’ bash.txt:忽略字符大小写

    # grep -i ‘bash’ bash.txt:忽略字符大小写

    澳门金沙国际 5

    澳门金沙国际 6

    # grep -o ‘root’ /etc/passwd:仅显示相称到的文本自己

    # grep -o ‘root’ /etc/passwd:仅体现相配到的文书本人

    澳门金沙国际 7

    澳门金沙国际 8

    # grep -q ‘root’ /etc/passwd:静默格局

    # grep -q ‘root’ /etc/passwd:静默方式

    澳门金沙国际 9

    澳门金沙国际 10

  示例

  示例

    # grep -e “r..t” -e “bash” /etc/passwd:使用多格局

    # grep -e “r..t” -e “bash” /etc/passwd:使用多情势

    澳门金沙国际 11

    澳门金沙国际 12

    # grep -f /root/test/mypat
/etc/passwd:使用保留在文书里的相称方式,情势无需加引号.

    # grep -f /root/test/mypat
/etc/passwd:使用保留在文件里的匹配情势,形式不要求加引号.

    澳门金沙国际 13

    澳门金沙国际 14

    # grep -A 1 “^[op]” /etc/passwd:展现匹配到的行前边的一行

    # grep -A 1 “^[op]” /etc/passwd:显示相称到的行后边的一行

    澳门金沙国际 15

    澳门金沙国际 16

    # grep -B 2 “^[op]” /etc/passwd:展现相称到的行前面包车型大巴两行

    # grep -B 2 “^[op]” /etc/passwd:显示相称到的行前边的两行

    澳门金沙国际 17

    澳门金沙国际 18

    # grep -C 1 “^[op]” /etc/passwd:展现相配到的行前后各1行

    # grep -C 1 “^[op]” /etc/passwd:展现相称到的行前后各1行

    澳门金沙国际 19

    澳门金沙国际 20

宗旨正则表明式元字符:

主干正则表明式元字符:

  一、字符相称:

  1、字符匹配:

    .:匹配任性单个字符

    .:匹配任意单个字符

    []:相配范围内的随机单个字符

    []:相称范围内的任意单个字符

    [^]:相称范围外的单个字符

    [^]:相配范围外的单个字符

    [:digit:]:任性单个数字

    [:digit:]:放4单个数字

    [:lower:]:任意单个小写字母

    [:lower:]:率性单个小写字母

    [:upper:]:任性单个大写字符

    [:upper:]:任性单个大写字符

    [:alpha:]:放肆单个字母

    [:alpha:]:肆意单个字母

    [:alnum:]:大四单个字母和数字

    [:alnum:]:自便单个字母和数字

    [:space:]:放肆单个空白字符

    [:space:]:放肆单个空白字符

    [:blank:]:任性单个空格和tab

    [:blank:]:任意单个空格和tab

    [:punct:]:任性单个标点符号

    [:punct:]:大四单个标点符号

    [:cntrl:]:自便单个调节符

    [:cntrl:]:放肆单个调整符

    [:graph:]:大4单个能显示的暗记

    [:graph:]:放4单个能突显的号子

    [:print:]:任性单个可打字与印刷符号

    [:print:]:率性单个可打字与印刷符号

    [:xdigit:]:大四单个十六进制字符

    [:xdigit:]:大4单个十六进制字符

  示例

  示例

    # ifconfig | grep “r..”:r后跟七个字符的行

    # ifconfig | grep “r..”:r后跟多少个字符的行

    澳门金沙国际 21

    澳门金沙国际 22

    # ifconfig | grep -i
“i[a-z][a-z]”:不区分轻重缓急写,i后跟多个字母的行

    # ifconfig | grep -i
“i[a-z][a-z]”:不区分轻重缓急写,i后跟三个假名的行

    澳门金沙国际 23

    澳门金沙国际 24

    # ifconfig | grep
“i[[:alpha:]][[:space:]]”:i后跟一个假名再跟七个空格的行

    # ifconfig | grep
“i[[:alpha:]][[:space:]]”:i后跟二个字母再跟一个空格的行

    澳门金沙国际 25

    澳门金沙国际 26

  二、次数相称:

  2、次数相称:

    用在要钦点其冒出的次数的字符后边,用于限制其日前的字符要出现的次数,暗许专门的职业在人欲横流形式

    用在要钦命其冒出的次数的字符前边,用于限制其前面的字符要出现的次数,暗中认可职业在穷奢极欲情势

    *:相配前面包车型大巴字符出现的放五回(0,一或频仍)

    *:相配前面包车型地铁字符出现的任性次(0,一或频仍)

    grep “x*y”:只要有y就匹配

    grep “x*y”:只要有y就匹配

    澳门金沙国际 27

    澳门金沙国际 28

    .*:相配大肆长度的妄动字符,也正是glob中的*

    .*:匹配任性长度的任意字符,相当于glob中的*

    grep “x.*y”:在x和y之间可现身大四长度大肆字符即相配

    grep “x.*y”:在x和y之间可出现放四长度大四字符即相配

    澳门金沙国际 29

    澳门金沙国际 30

    \+:相配前边的字符至少3回(1遍或频仍);\为转义符

    \+:相称前面包车型地铁字符至少贰回(贰回或频仍);\为转义符

    grep “x\+y”:y在此以前务必出现叁个x

    grep “x\+y”:y以前务必出现一个x

    澳门金沙国际 31

    澳门金沙国际 32

    \?:相称前边的字符0次或一回,即眼下的字符可有可无

    \?:相配前边的字符0次或一回,即目前的字符可有可无

    grep “x\?y”:只要有y就匹配

    grep “x\?y”:只要有y就匹配

    澳门金沙国际 33

    澳门金沙国际 34

    \{m\}:相称其前边的字符出现m次,m为非负整数

    \{m\}:相配其眼下的字符出现m次,m为非负整数

    grep “x\{2\}y”:y前出现2次x就匹配

    grep “x\{2\}y”:y前出现2次x就匹配

    澳门金沙国际 35

    澳门金沙国际 36

    \{m,n\}:相配其前方的字符出现m次,m为非负整数;闭区间[m,n]

    \{m,n\}:般配其前方的字符出现m次,m为非负整数;闭区间[m,n]

    澳门金沙国际 37

    澳门金沙国际 38

    \{0,n\}:至多n次

    \{0,n\}:至多n次

    澳门金沙国际 39

    澳门金沙国际 40

    因为会同盟数次,所以1切都会协作

    因为会合作多次,所以任何都会同盟

    \{m,\}:至少m次

    \{m,\}:至少m次

    澳门金沙国际 41

    澳门金沙国际 42

  示例

  示例

    # ifconfig | grep
“i[[:alpha:]]\{3\}”:相配i后跟一个字母的行

    # ifconfig | grep
“i[[:alpha:]]\{3\}”:相称i后跟1个字母的行

    澳门金沙国际 43

    澳门金沙国际 44

    # ifconfig | grep
“i[[:alpha:]]\{3,\}”:相配i后跟至少二个假名的行

    # ifconfig | grep
“i[[:alpha:]]\{3,\}”:相配i后跟至少三个假名的行

    澳门金沙国际 45

    澳门金沙国际 46

  叁、地点锚定:

  ③、地方锚定:

    限制使用方式寻找文本,限制方式所相称到的文件只可以出现于目的文本的哪位岗位

    限制使用方式寻觅文本,限制方式所相配到的文书只可以出现于目的文本的哪个地点

    ^:行首锚定;用于方式的最左侧,^PATTEENCOREN

    ^:行首锚定;用于格局的最左侧,^PATTEPAJERON

    $:行尾锚定;用于格局的最右面,PATTEOdysseyN$

    $:行尾锚定;用于方式的最左边,PATTE本田UR-VN$

    ^PATTEENVISIONN$:要让PATTE奥迪Q3N完全相称一整行

    ^PATTE陆风X八N$:要让PATTE兰德酷路泽N完全合作壹整行

    ^$:相配空行;

    ^$:相称空行;

    ^[[:space:]].*$:相称空白行;

    ^[[:space:]].*$:相称空白行;

  示例

  示例

    # grep “^r..t” /etc/passwd:相配r开始后跟多个字符再跟t的行

    # grep “^r..t” /etc/passwd:相称r开首后跟五个字符再跟t的行

    澳门金沙国际 47

    澳门金沙国际 48

    # grep “l.\{3\}n” /etc/passwd:匹配l后跟二个字符再跟n的行

    # grep “l.\{3\}n” /etc/passwd:相称l后跟二个字符再跟n的行

    澳门金沙国际 49

    澳门金沙国际 50

    # grep “l.\{3\}n$” /etc/passwd:相称l后跟一个字符再跟n结尾的行

    # grep “l.\{3\}n$” /etc/passwd:匹配l后跟3个字符再跟n结尾的行

    澳门金沙国际 51

    澳门金沙国际 52

    # grep “[[:space:]]\+”
/etc/passwd:匹配至少延续出现一个空格的行

    # grep “[[:space:]]\+”
/etc/passwd:相称至少接二连三出现一个空格的行

    澳门金沙国际 53

    澳门金沙国际 54

  单词:非特殊字符组成的接连字符(字符串)都号称单词

  单词:非特殊字符组成的连天字符(字符串)都叫作单词

    \<或\b:词首锚定,用于单词方式的左臂,格式为\<PATTERN,/bPATTERN

    \<或\b:词首锚定,用于单词方式的左臂,格式为\<PATTERN,/bPATTERN

    \>或\b:词尾锚定,用于的许诺形式的左边,格式为PATTEQX56N\>,PATTERN\b

    \>或\b:词尾锚定,用于的承诺方式的出手,格式为PATTE中华VN\>,PATTERN\b

  示例

  示例

    # grep “\<r..t”
/etc/passwd:相称单词词首:r后跟多个字符再跟t的行

    # grep “\<r..t”
/etc/passwd:相称单词词首:r后跟四个字符再跟t的行

    澳门金沙国际 55

    澳门金沙国际 56

    # grep “\<r..t\>”
/etc/passwd:相称单词:r后跟五个字符再跟t的行

    # grep “\<r..t\>”
/etc/passwd:相配单词:r后跟七个字符再跟t的行

    澳门金沙国际 57

    澳门金沙国际 58

    # ifconfig | grep
“\<[0-9]\{3\}\>”:相配单词:多个数字

    # ifconfig | grep
“\<[0-9]\{3\}\>”:匹配单词:四个数字

    澳门金沙国际 59

    澳门金沙国际 60

  越多实例:

  越来越多实例:

    一、彰显/etc/passwd文件中不以bash结尾的行

    壹、突显/etc/passwd文件中不以bash结尾的行

    # grep -v ‘bash$’ /etc/passwd

    # grep -v ‘bash$’ /etc/passwd

    澳门金沙国际 61

    澳门金沙国际 62

    贰、寻找/etc/passwd文件中的多少人或3个人数

    二、搜索/etc/passwd文件中的2个人或贰位数

    # grep ‘\<[0-9]\{3,4\}\>’ /etc/passwd

    # grep ‘\<[0-9]\{3,4\}\>’ /etc/passwd

    澳门金沙国际 63

    澳门金沙国际 64

    ③、找寻/etc/grub2.cfg文件中,以致少3个空白字符开首,后边又跟了一非空白字符的行

    三、寻找/etc/grub二.cfg文件中,以致少三个空白字符起初,前面又跟了一非空白字符的行

    # grep ‘^[[:space:]]\+[^[:space:]]’ /etc/grub2.cfg

    # grep ‘^[[:space:]]\+[^[:space:]]’ /etc/grub2.cfg

    澳门金沙国际 65

    澳门金沙国际 66

    四、寻觅”netstat
-tan”命令的结果中,以‘LISTEN’后跟0或几个空白字符结尾的行

    四、寻找”netstat
-tan”命令的结果中,以‘LISTEN’后跟0或几个空白字符结尾的行

    # netstat -tan | grep ‘LISTEN[[:space:]]*$’

    # netstat -tan | grep ‘LISTEN[[:space:]]*$’

    澳门金沙国际 67

    澳门金沙国际 68

    五、找寻“fdisk -l”命令结果中,以/dev/后跟sd或hd及三个小写字母的行

    5、寻觅“fdisk -l”命令结果中,以/dev/后跟sd或hd及一个小写字母的行

    # fdisk -l | grep ‘/dev/[sh]d[a-z]\>’

    # fdisk -l | grep ‘/dev/[sh]d[a-z]\>’

    澳门金沙国际 69

    澳门金沙国际 70

    6、寻觅“ldd /usr/bin/cat”命令的结果中的文件路径

    陆、寻觅“ldd /usr/bin/cat”命令的结果中的文件路线

    # ldd /usr/bin/cat | grep -o ‘/[^[:space:]]\+’

    # ldd /usr/bin/cat | grep -o ‘/[^[:space:]]\+’

    澳门金沙国际 71

    澳门金沙国际 72

  四、分组与引用:

  四、分组与引用:

    \(PATTERN\):将此PATTESportageN相配到的字符当作三个不可分割的完好举行拍卖

    \(PATTERN\):将此PATTE揽胜N匹配到的字符当作一个不可分割的1体化进行管理

    注意:分组括号中的方式相配到的字符会被正则表达式引擎自动记录于个中变量中,那么些变量是\1,\2,\3,…

    注意:分组括号中的格局相配到的字符会被正则表达式引擎自动记录于当中变量中,那么些变量是\1,\2,\3,…

    例如:pat1\(pat2\)pat3\(pat4\(pat5)pat6\)

    例如:pat1\(pat2\)pat3\(pat4\(pat5)pat6\)

    \n:情势中的第n个左括号以及与之配合的右括号之间的格局所匹配到的字符串(不是形式,而是形式相称的结果)

    \n:形式中的第n个左括号以及与之同盟的右括号之间的形式所相称到的字符串(不是方式,而是方式匹配的结果)

    \一:表示第二组括号总的PATTETiguanN相称到的的字符串;上例:pat二

    \一:表示第二组括号总的PATTE奥迪Q5N相配到的的字符串;上例:pat二

    \二:表示第一组括号总的PATTERubiconN相称到的的字符串;上例:pat四\(pat5)pat6

    \2:表示第贰组括号总的PATTE福睿斯N相配到的的字符串;上例:pat四\(pat5)pat6

    \三:表示第二组括号总的PATTE卡宴N相称到的的字符串;上例:pat五

    \三:表示第二组括号总的PATTERN相称到的的字符串;上例:pat5

    …

    …

    示例,文书档案test内容如下:

    示例,文档test内容如下:

    he love his lover

    he love his lover

    he like his lover

    he like his lover

    he love his liker

    he love his liker

    he like his liker

    he like his liker

    .*l..e.*l..er

    .*l..e.*l..er

    \(l..e\).*\1r

    \(l..e\).*\1r

    # grep -o ‘l..e.*l..er’ test:不能够不负众望规范相配

    # grep -o ‘l..e.*l..er’ test:不可能成功规范相配

    澳门金沙国际 73

    澳门金沙国际 74

    # grep -o ‘\(l..e\).*\一r’ test:分组可做到规范相称

    # grep -o ‘\(l..e\).*\一r’ test:分组可成功标准相称

    澳门金沙国际 75

    澳门金沙国际 76

    后向引用:引用前面包车型客车括号中的形式所相称到的字符串

    后向引用:引用前边的括号中的格局所相称到的字符串

egrep命令:

egrep命令:

    命令格式

    命令格式

      egrep [OPTIONS] PATTERN [FILE…]

      egrep [OPTIONS] PATTERN [FILE…]

    命令选项:

    命令选项:

      egrep的抉择与grep同样

      egrep的取舍与grep一样

    扩张正则表明式的元字符:不供给转义符

    扩充正则表明式的元字符:不供给转义符

    字符相称:

    字符相配:

      .:相称任意单个字符

      .:匹配任性单个字符

      []:相配范围内的自由单个字符

      []:相配范围内的私行单个字符

      [^]:相配范围外的单个字符

      [^]:相称范围外的单个字符

      [:digit:]:任性单个数字

      [:digit:]:大肆单个数字

      [:lower:]:大4单个小写字母

      [:lower:]:放肆单个小写字母

      [:upper:]:率性单个大写字符

      [:upper:]:大四单个大写字符

      [:alpha:]:放四单个字母

      [:alpha:]:大4单个字母

      [:alnum:]:放4单个字母和数字

澳门金沙国际 ,      [:alnum:]:大肆单个字母和数字

      [:space:]:大4单个空格

      [:space:]:大4单个空格

      [:blank:]:任性单个空格和tab

      [:blank:]:放肆单个空格和tab

      [:punct:]:放四单个标点符号

      [:punct:]:肆意单个标点符号

    次数相称:

    次数相配:

      *:相称前边的字符(可有可无)出现的率性次(0,一或频繁)

      *:相配后面包车型大巴字符(可有可无)现身的放四回(0,1或频繁)

      ?:相称前面包车型地铁字符0次或3次,即眼下的字符可有可无

      ?:相称前边的字符0次或1回,即目前的字符可有可无

      +:相配后边的字符至少3遍(二回或频仍)

      +:相称前边的字符至少二遍(3回或频繁)

      {m}:相配其前边的字符出现m次,m为非负整数

      {m}:相称其前边的字符出现m次,m为非负整数

      {m,n}:相称其眼下的字符出现m次,m为非负整数

      {m,n}:相称其目前的字符出现m次,m为非负整数

      {0,n}:至多n次

      {0,n}:至多n次

      {m,}:至少m次

      {m,}:至少m次

    地方锚定:

    地方锚定:

      ^:行首锚定;用于情势的最左边,^PATTE库罗德N

      ^:行首锚定;用于方式的最右侧,^PATTE劲客N

      $:行尾锚定;用于格局的最右侧,PATTE凯雷德N$

      $:行尾锚定;用于方式的最右侧,PATTESportageN$

      ^PATTELANDN$:要让PATTE揽胜极光N完全协作一整行

      ^PATTE奥迪Q5N$:要让PATTEOdysseyN完全相称壹整行

      ^$:相称空行

      ^$:相称空行

      \<,\b:词首锚定,用于单词格局的右臂,格式为\<PATTERN,/bPATTERN

      \<,\b:词首锚定,用于单词情势的右边,格式为\<PATTERN,/bPATTERN

      \>,\b:词尾锚定,用于的承诺形式的出手,格式为PATTE卡宴N\>,PATTERN\b

      \>,\b:词尾锚定,用于的答应形式的左臂,格式为PATTE奥迪Q伍N\>,PATTERN\b

    分组及引用:

    分组及引用:

      (pattern):分组,括号中的情势相配到的字符会被储存海岩则表明式引擎内部的变量中

      (pattern):分组,括号中的格局匹配到的字符会被积存李樯则表明式引擎内部的变量中

      后向引用:\1,\2,\3,…

      后向引用:\1,\2,\3,…

    或者:

    或者:

      a|b:a或者b

      a|b:a或者b

      C|cat:表示C或cat

      C|cat:表示C或cat

      (C|c)at:表示Cat或cat

      (C|c)at:表示Cat或cat

  egrep实例:

  egrep实例:

      1、呈现/etc/passwd文件中不以bash结尾的行

      1、展现/etc/passwd文件中不以bash结尾的行

      # egrep -v ‘bash$’ /etc/passwd

      # egrep -v ‘bash$’ /etc/passwd

      澳门金沙国际 77

      澳门金沙国际 78

      二、搜索/etc/passwd文件中的4位或3人数

      二、寻找/etc/passwd文件中的3位或三位数

      # egrep ‘\<[0-9]{3,4}\>’ /etc/passwd

      # egrep ‘\<[0-9]{3,4}\>’ /etc/passwd

      澳门金沙国际 79

      澳门金沙国际 80

      三、搜索/etc/grub二.cfg文件中,以致少二个空白字符初叶,前边又跟了壹非空白字符的行

      叁、找寻/etc/grub二.cfg文件中,乃至少3个空白字符开始,后边又跟了一非空白字符的行

      # egrep ‘^[[:space:]]+[^[:space:]]’ /etc/grub2.cfg

      # egrep ‘^[[:space:]]+[^[:space:]]’ /etc/grub2.cfg

      澳门金沙国际 81

      澳门金沙国际 82

      四、搜索”netstat
-tan”命令的结果中,以‘LISTEN’后跟0或多个空白字符结尾的行

      4、寻觅”netstat
-tan”命令的结果中,以‘LISTEN’后跟0或多个空白字符结尾的行

      # netstat -tan | egrep ‘LISTEN[[:space:]]*$’

      # netstat -tan | egrep ‘LISTEN[[:space:]]*$’

      澳门金沙国际 83

      澳门金沙国际 84

      五、找寻“fdisk
-l”命令结果中,以/dev/后跟sd或hd及一个小写字母的行

      五、寻觅“fdisk
-l”命令结果中,以/dev/后跟sd或hd及2个小写字母的行

      # fdisk -l | egrep ‘/dev/[sh]d[a-z]\>’

      # fdisk -l | egrep ‘/dev/[sh]d[a-z]\>’

      # fdisk -l | egrep ‘/dev/(s|h)d[a-z]\>’

      # fdisk -l | egrep ‘/dev/(s|h)d[a-z]\>’

      澳门金沙国际 85

      澳门金沙国际 86

      六、寻找“ldd /usr/bin/cat”命令的结果中的文件路径

      陆、搜索“ldd /usr/bin/cat”命令的结果中的文件路径

      # ldd /usr/bin/cat | egrep -o ‘/[^[:space:]]+’

      # ldd /usr/bin/cat | egrep -o ‘/[^[:space:]]+’

      澳门金沙国际 87

      澳门金沙国际 88

      7、寻找/proc/meninfo文件中,全数以大写或小写s初叶的行,至少用三种办法贯彻

      七、寻找/proc/meninfo文件中,全数以大写或小写s伊始的行,至少用三种艺术落成

      # egrep “^(s|S)” /proc/meminfo

      # egrep “^(s|S)” /proc/meminfo

      # grep “^[sS]” /proc/meminfo

      # grep “^[sS]” /proc/meminfo

      # grep -i “^s” /proc/meminfo

      # grep -i “^s” /proc/meminfo

      澳门金沙国际 89

      澳门金沙国际 90

      捌、显示当前系统上root,centos,或slackware用户的相干音信

      八、展现当前系统上root,centos,或slackware用户的相关新闻

      # egrep “^(root|centos|slackware)\>” /etc/passwd

      # egrep “^(root|centos|slackware)\>” /etc/passwd

      # egrep “^(root|centos|slackware):” /etc/passwd

      # egrep “^(root|centos|slackware):” /etc/passwd

      澳门金沙国际 91

      澳门金沙国际 92

      玖、echo输出一个相对路线,使用grep抽取基名

      玖、echo输出一个绝对路径,使用grep抽出基名

      # echo /etc/passwd/ | egrep -o “[^/]+/?$”

      # echo /etc/passwd/ | egrep -o “[^/]+/?$”

      澳门金沙国际 93

      澳门金沙国际 94

      拾、找寻ifconfig命令结果中的壹-25伍之间的平头

      十、搜索ifconfig命令结果中的壹-255以内的整数

      # ifconfig| egrep
“\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>”

      # ifconfig| egrep
“\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>”

      澳门金沙国际 95

      澳门金沙国际 96

      1壹、增加用户bash、testbash、及nologin,要求前多个用户的默许shell为/bin/bash,而后寻找其用户名与shell同样的用户

      11、增加用户bash、testbash、及nologin,须要前七个用户的默许shell为/bin/bash,而后寻觅其用户名与shell同样的用户

      # egrep “^([a-z0-9]+)\>.*\1$” /etc/passwd

      # egrep “^([a-z0-9]+)\>.*\1$” /etc/passwd

      澳门金沙国际 97

      澳门金沙国际 98

相关文章