大家在念书正则表明式以前,首先要简美赞臣(Meadjohnson)点,并把它牢牢记在心头,这便是:

shell编制程序之grep命令的选用,grep命令的使用

世家在念书正则表明式此前,首先要掌握一点,并把它牢牢记在心底,那正是:

在linux中,通配符是由shell解释的,而正则表明式则是由命令解释的,不要把互相搞混了。切记!!!

一般而言有三种文本处理工科具/命令:grep、sed、awk,它们三者均能够说明正则。上边笔者就为大家介绍grep命令的选择方法。

 

① 、使用grep命令搜索文件中的内容

grep和egrep命令能够在三个或八个文本的情节中寻觅某一一定的字符方式,也被称为正则表明式(regular
expressions)。
2个形式能够是2个纯粹的字符、二个字符串、一个单词或3个句子。

1个正则表达式是描述一组字符串的3个方式。正则表明式的结缘是人云亦云了数学表达式,通过利用操作符将较小的表达式组合成二个新的表明式。贰个正则表明式既能够是部分纯文本文字,也得以是用来发生形式的一部分特殊字符。为了越发定义三个查找情势,grep命令协助以下三种正则表明式的元字符,也称通配符。

ps:正则表明式语言由二种基本字符类型组成:原义(不荒谬)文本字符和元字符。元字符使正则表明式具有处理能力。所谓元字符正是指那一个在正则表达式中存有万分意义的专用字符,可以用来分明其引导字符(即位于元字符前边的字符)在对象对象中的出现格局。

c*:将匹配0个或多少个字符c

.:将合营任何1个且只好是三个字符(换行符除此而外)

[xyz]:将合营方括号中的任意3个字符

[^xyz]:将协作不包涵方括号中的字符的全部字符

^:锁定行的起来

$:锁定行的结尾

在大旨正则表达式中,如元字符*、+、{}、|、和()已经错过了它们原来的意义,假若要上涨他们本来的意义要在在此以前冠以反斜线\,如\*、\+等。

grep命令是用来在每3个文本中或标准输出上查找一定的格局。当使用grep命令时,包蕴贰个钦点字符情势的每一行都会被打字与印刷在荧屏上,grep命令的语法格式如下:

grep 选项 模式 文件名

当中,选项能够改变grep命令的摸索格局,除了-w选项外,其余的种种选项都足以在egrep和fgrep命令中采用。grep命令常用选项如下:

-c(count):仅列出含有情势的行数

-i(ignore):忽略方式中字母大小写

-l(list):列出带有匹配行的文件名

-n:在匹配行的前方列出游号

-v:列出没有匹配情势的行(取反)

-w:把表达式当做二个全体的单字来查找,忽略那么些部分匹配的行

-q
 :静默格局,没有其它输出,得用$?来判断执行成功并未,即有没有过滤到想要的剧情

-A n  :若是匹配成功,则将匹配行及未来n行一起打字与印刷出来

-B n  :即使匹配成功,则将匹配行及其前n行一起打字与印刷出来

-C n  :借使合营成功,则将匹配行及其左右n行一起打字与印刷出来

ps:若是搜索的是八个文本,grep命令的结果只展现在文书中窥见匹配方式的文书名;

      借使搜索的是单个文件,grep命令的结果将呈现每2个带有匹配情势的行。

 

地点就是grep命令的骨干使用格局。不过有时一个粗略的正则表达式不恐怕稳定你要摸索的剧情,如要搜索同时满意形式一和方式二的数额行,那时egrep命令就足以派上用场。

egrep命令的语法格式和grep命令相同。可是egrep命令是用来在2个或三个文件的内容中应用扩大的正则表达式的元字符搜索特定的形式。扩大的正则说明式的元字符包涵了grep命令中利用的正则表明式元字符的还要,还增添了有的附加的元字符,差不多有下边多少个:

+:匹配三个或多少个前导字符

a|b:匹配a或b

(RE):匹配括号中的正则表明式RE

 

下边作者将透过有个别主干的例证来增长我们对grep和egrep命令用法的领悟。鉴于grep命令中存有的选项egrep都能够使用(egrep更坚实硬),为方便起见小编将使用egrep命令为我们演示:

例一:呈现出文件/etc/passwd含有root的行

澳门金沙国际 1

 

例二:输出/etc/passwd中别的带有bash的保有行,还要输出紧接着那行的前后各两行的始末

澳门金沙国际 2

 

例三:显示出/etc/passwd中有稍许行含有nologin

澳门金沙国际 3

 

例四:展现出/etc/passwd中那2个行含有root,并将行号一块输出

澳门金沙国际 4

 

例五:

新建用户abominable、abominate、anomie、atomize,编写正则表明式,将她们分外出来

 

 

例六:新建用户亚历克斯213sb、Wpq2222b、yH438PIG、egon66⑥ 、egon过滤出用户名组成是字母+数字+字母的行

澳门金沙国际 5

 

例七:展现出/etc目录下有所包罗root的公文名

澳门金沙国际 6

 

例八:过滤掉/etc/ssh/sshd_config内有着注释和持有空行

澳门金沙国际 7

 

以上例子只是相当的小的一有的,大家只要勤加练习,一定极快就能操纵grep命令的利用啦
^^

 

我们在学习正则表明式以前,首先要肯定一点,并把它牢牢记在内心,那正是:
在linux中,通配…

世家在求学正则表达式在此之前,首先要分美赞臣点,并把它牢牢记在心尖,那就是:

① 、环境边量

在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,不要把双边搞混了。切记!!!

在linux中,通配符是由shell解释的,而正则表明式则是由命令解释的,不要把双方搞混了。切记!!!

各类用户登录shell须求实践的多少个文件

一般而言有二种文本处理工具/命令:grep、sed、awk,它们三者均能够表达正则。上边小编就为我们介绍grep命令的应用办法。

常常有三种文本处理工科具/命令:grep、sed、awk,它们三者均能够解释正则。下边作者就为大家介绍grep命令的使用办法。

  /etc/profile

 

 

  /home/egon/.bashrc_profile

壹 、使用grep命令搜索文件中的内容

一 、使用grep命令搜索文件中的内容

  /home/egon/.bashrc

grep和egrep命令能够在一个或四个文本的情节中寻觅某一特定的字符情势,也被称呼正则表明式(regular
expressions)。
三个情势能够是贰个单一的字符、一个字符串、2个单词或1个句子。

grep和egrep命令能够在3个或三个公文的始末中找寻某一一定的字符格局,也被称之为正则表明式(regular
expressions)。
二个情势能够是2个单纯的字符、四个字符串、多个单词或三个句子。

  /etc/bashrc

2个正则表明式是讲述一组字符串的贰个形式。正则表明式的重组是仿照了数学表明式,通过采用操作符将较小的表明式组合成1个新的表明式。2个正则表明式既能够是有个别纯文本文字,也得以是用来发出方式的有的特殊字符。为了越发定义3个物色方式,grep命令接济以下三种正则表明式的元字符,也称通配符。

1个正则表明式是讲述一组字符串的3个情势。正则表明式的构成是模仿了数学表明式,通过采用操作符将较小的表明式组合成一个新的表明式。一个正则表明式既能够是有些纯文本文字,也得以是用来发出方式的一对特殊字符。为了越发定义2个招来方式,grep命令帮忙以下两种正则表明式的元字符,也称通配符。

非登录shell加载的公文

ps:正则表明式语言由三种基本字符类型组成:原义(平常)文本字符和元字符。元字符使正则表明式具有处理能力。所谓元字符便是指那个在正则表明式中全体独特意义的专用字符,能够用来分明其指引字符(即位于元字符前边的字符)在对象对象中的出现形式。

ps:正则表明式语言由三种基本字符类型组成:原义(平常)文本字符和元字符。元字符使正则表明式具有处理能力。所谓元字符就是指那几个在正则表明式中存有特出意义的专用字符,能够用来明确其引导字符(即位于元字符前边的字符)在对象对象中的出现格局。

  /home/egon/.bashrc

c*:将匹配0个或八个字符c

c*:将匹配0个或七个字符c

  /etc/bashrc

.:将合营任何3个且只可以是二个字符(换行符除了那一个之外)

.:将合营任何3个且不得不是三个字符(换行符除此之外)

要定位三个布置时在哪一类登录下生效,就明显的明亮该写在哪个文件里了

[xyz]:将杰出方括号中的任意四个字符

[xyz]:将格外方括号中的任意三个字符

常见,我们会将环境变量设置在 /home/egon/.bashrc

[^xyz]:将匹配不包蕴方括号中的字符的享有字符

[^xyz]:将匹配不包涵方括号中的字符的持有字符

若是不管哪类登录都想利用的变量就安装在/etc/bashrc中

^:锁定行的上马

^:锁定行的开首

添加语句:(以python3为例)

$:锁定行的终极

$:锁定行的末尾

  PATH=/usr/local/python3:$PATH

在中央正则表明式中,如元字符*、+、{}、|、和()已经失却了它们原来的含义,假使要复苏他们原本的意义要在后面冠以反斜线\,如\*、\+等。

在基本正则表明式中,如元字符*、+、{}、|、和()已经失去了它们原来的意义,要是要过来他们原来的意思要在前头冠以反斜线\,如\*、\+等。

常用命令,shell编制程序之grep命令的接纳。  export PATH

grep命令是用来在每一个文件中或标准输出上搜寻一定的格局。当使用grep命令时,包罗八个钦赐字符方式的每一行都会被打字与印刷在显示屏上,grep命令的语法格式如下:

grep命令是用来在每四个文本中或正式输出上搜寻一定的格局。当使用grep命令时,包蕴一个钦命字符情势的每一行都会被打字与印刷在显示器上,grep命令的语法格式如下:

 

grep 选项 模式 文件名

grep 选项 模式 文件名

② 、bash瓜时字符:

中间,选项能够变更grep命令的寻找格局,除了-w选项外,别的的各种选项都得以在egrep和fgrep命令中接纳。grep命令常用选项如下:

在那之中,选项能够变动grep命令的查找方式,除了-w选项外,别的的各样选项都得以在egrep和fgrep命令中央银行使。grep命令常用选项如下:

      bash中的特殊字符,键盘上能敲出来的特殊字符都有其非凡含义

-c(count):仅列出含有格局的行数

-c(count):仅列出含有格局的行数

      元字符是被shell解释的

-i(ignore):忽略情势中字母大小写

-i(ignore):忽略形式中字母大小写

一声令下替换取命令的推行结果

-l(list):列出带有匹配行的文本名

-l(list):列出带有匹配行的文书名

      res=`ls`                     
#取命令的周转结果,赋值给变量res

-n:在匹配行的先头列骑行号

-n:在匹配行的前面列出游号

$()同“但它弥补了“的嵌套缺陷

-v:列出没有匹配情势的行(取反)

-v:列出没有匹配格局的行(取反)

       res=$(echo $(ls))         #代表方案

-w:把表达式当做二个完好的单字来搜寻,忽略这么些部分匹配的行

-w:把表明式当做2个完好无损的单字来寻觅,忽略那几个部分匹配的行

~ 家目录

-q
 :静默情势,没有其余输出,得用$?来判断执行成功并未,即有没有过滤到想要的内容

-q
 :静默情势,没有别的输出,得用$?来判定执行成功没有,即有没有过滤到想要的始末

! 取非/匹配近来贰遍历史命令

-A n
 :假若同盟成功,则将匹配行及随后n行一起打字与印刷出来

-A n
 :如若合营成功,则将匹配行及以往n行一起打印出来

! ls 带空格将下令的回到值取反

-B n
 :即使合作成功,则将匹配行及其前n行一起打字与印刷出来

-B n
 :假使匹配成功,则将匹配行及其前n行一起打字与印刷出来

      [root@~]# ! echo ok #将结果取反

-C n
 :如若同盟成功,则将匹配行及其左右n行一起打字与印刷出来

-C n
 :即便合作成功,则将匹配行及其前后n行一起打印出来

      ok

ps:假若搜索的是三个文件,grep命令的结果只展现在文件中发现匹配格局的公文名;

ps:借使搜索的是三个公文,grep命令的结果只体未来文书中发觉匹配格局的文件名;

      [root@ ~]# echo $?

     
假诺搜索的是单个文件,grep命令的结果将浮现每三个涵盖匹配情势的行。

     
尽管搜索的是单个文件,grep命令的结果将呈现每多个饱含匹配形式的行。

      1

 

 

@ 无特殊含义

上边就是grep命令的主导采纳办法。不过有时一个不难的正则表达式不能稳定你要物色的内容,如要搜索同时满意情势一和情势二的多少行,那时egrep命令就能够派上用场。

地方正是grep命令的大旨选用方法。可是有时1个简练的正则表明式不能够稳定你要物色的始末,如要搜索同时满意格局一和情势二的多寡行,那时egrep命令就足以派上用场。

# 注释

egrep命令的语法格式和grep命令相同。不过egrep命令是用来在三个或多少个文本的始末中动用扩充的正则表明式的元字符搜索特定的形式。扩张的正则表达式的元字符包罗了grep命令中选择的正则表达式元字符的同时,还扩展了部分至极的元字符,大概有下边多少个:

egrep命令的语法格式和grep命令相同。然而egrep命令是用来在1个或八个文件的剧情中应用扩充的正则表达式的元字符搜索特定的格局。扩充的正则表达式的元字符包罗了grep命令中利用的正则表明式元字符的还要,还扩张了有个别额外的元字符,差不多有上面多少个:

$ 变量取值

+:匹配多少个或多少个前导字符

+:匹配2个或七个前导字符

$() 同“

a|b:匹配a或b

a|b:匹配a或b

${} 变量名的限量

(RE):匹配括号中的正则表明式RE

(RE):匹配括号中的正则表明式RE

$[] 平头总结    

 

 

& 后台执行;&& 逻辑与     

上边作者将通过某个主题的例子来增长大家对grep和egrep命令用法的打听。鉴于grep命令中拥有的选项egrep都能够接纳(egrep更加强硬),为便利起见笔者将利用egrep命令为大家演示:

上边小编将经过有些主导的例子来进步我们对grep和egrep命令用法的刺探。鉴于grep命令中有着的选项egrep都能够使用(egrep更压实有力),为方便起见笔者将运用egrep命令为大家演示:

* 合作任意长度字符串;计算乘法

例一:展现出文件/etc/passwd含有root的行

例一:展现出文件/etc/passwd含有root的行

() 在子进度中推行 

澳门金沙国际 8

澳门金沙国际 9

“” 软引 ”硬引

 

 

; 能够接多个指令   

例二:输出/etc/passwd中此外带有bash的富有行,还要输出紧接着那行的左右各两行的内容

例二:输出/etc/passwd中其余带有bash的有着行,还要输出紧接着那行的上下各两行的剧情

: 空命令真值   

澳门金沙国际 10

澳门金沙国际 11

| 管道; || 逻辑或

 

 

\ 转义;

例三:呈现出/etc/passwd中有个别许行含有nologin

例三:展现出/etc/passwd中有稍许行含有nologin

{} 指令列表,注意括号内的上三保太监最终必须是空格{    ls; cd /;   }

澳门金沙国际 12

澳门金沙国际 13

[] 字符通配,匹配括号内之一;    

 

 

     

例四:突显出/etc/passwd中那个行含有root,并将行号一块输出

例四:显示出/etc/passwd中那多少个行含有root,并将行号一块输出

叁 、正则表明式

澳门金沙国际 14

澳门金沙国际 15

正则:用部分怀有独特意义的记号组合到一块儿(称为正则表明式)来描述字符只怕字符串的格局。

 

 

        大概说:正则就是用来描述一类东西的规则。

例五:

例五:

在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的 

新建用户abominable、abominate、anomie、atomize,编写正则表明式,将他们十分出来

新建用户abominable、abominate、anomie、atomize,编写正则表明式,将她们非常出来

 

 澳门金沙国际 16

 澳门金沙国际 17

④ 、文本处理工具/命令:grep

 

 

1、参数

例六:新建用户亚历克斯213sb、Wpq2222b、yH438PIG、egon66⑥ 、egon过滤出用户名组成是字母+数字+字母的行

例六:新建用户亚历克斯213sb、Wpq2222b、yH438PIG、egon66陆 、egon过滤出用户名组成是字母+数字+字母的行

      -n  :展现行号

澳门金沙国际 18

澳门金沙国际 19

      -o  :只呈现匹配的内容

 

 

      -q 
:静默形式,没有其余输出,得用$?来判定执行成功没有,即有没有过滤到想要的始末

例七:呈现出/etc目录下全部包括root的文书名

例七:展现出/etc目录下拥有包含root的文件名

      -l 
:若是合作成功,则只将文件名打字与印刷出来,败北则不打字与印刷,日常-rl一起用,grep
-rl ‘root’ /etc

澳门金沙国际 20

澳门金沙国际 21

      -A  :假如匹配成功,则将匹配行及之后n行一起打印出来

 

 

      -B  :如若协作成功,则将匹配行及其前n行一起打字与印刷出来

例八:过滤掉/etc/ssh/sshd_config内享有注释和拥有空行

例八:过滤掉/etc/ssh/sshd_config内有所注释和具有空行

      -C  :假诺同盟成功,则将匹配行及其左右n行一起打字与印刷出来

澳门金沙国际 22

澳门金沙国际 23

      –color

 

澳门金沙国际 , 

      -c  :假如合营成功,则将匹配到的行数打字与印刷出来

以上例子只是不大的一片段,大家只要勤加练习,一定十分的快就能控制grep命令的使用啦
^^

上述例子只是十分小的一片段,大家假诺勤加操练,一定十分的快就能操纵grep命令的运用啦
^^

      -E  :等于egrep,扩展

 

 

      -i  :忽略大小写

      -v  :取反,不匹配

      -w:匹配单词

      -r  递归查询

2、grep种类

      grep

      fgrep

      pgrep

      egrep

      常用grep、egrep

叁 、正则介绍

      ^    行首

      $    行尾

      .     除了换行符以外的私下单个字符

      *    前导字符的零个或七个

      .*   具有字符

      []   字符组内的任一字符

      [^] 对字符组内的各种字符取反(不匹配字符组内的种种字符)

      ^[^]     非字符组内的字符开始的行

      [a-z] 小写字母

      [A-Z] 大写字母

      [a-Z] 小写和大写字母

      [0-9] 数字

      \< 
单词头单词一般以空格或特殊字符做分隔,三番五次的字符串被当做单词

      \>  单词尾

  | 

      grep -E egrep 或转义

      ? 引导字符零个或1个

      + 向导字符一个或几个

      x{m} x出现m次

      x{m,} x现身m次至数十一次(至少m次)

      x{m,n} x出现m次至n次

   澳门金沙国际 24

  澳门金沙国际 25

  澳门金沙国际 26 

   澳门金沙国际 27

 

 

作业:grep作业(正则表明式及字符处理)

指标文件/etc/passwd,使用grep命令或egrep

1.彰显出富有含有root的行:

命令:grep ‘root’ /etc/passwd  

  澳门金沙国际 28

2.输出任何带有bash的有着行,还要输出紧接着这行的内外各两行的剧情:

命令:grep –C2 ‘bash’ /etc/passwd

   澳门金沙国际 29

3.  显示出有多少行含有nologin。

命令:grep –c ‘nologin’ /etc/passwd

   澳门金沙国际 30

 

4.出示出那多少个行含有root,并将行号一块输出。

命令:grep –n ‘root’ /etc/passwd

   澳门金沙国际 31

 

5.新建用户abominable、abominate、anomie、atomize

            编排正则说明式,将他们杰出出来

命令:useradd abominable

            useradd abominate

            useradd anomie

            useradd atomize

正则表明式:grep –o ‘a.omi.*e’ /etc/passwd

    澳门金沙国际 32

 

 

 6.建八个用户亚历克斯213sb、Wpq2222b、yH438PIG、egon66⑥ 、egon

            过滤出用户名组成是字母+数字+字母的行

命令:useradd Alex213sb

            useradd Wpq2222b

            useradd yH438PIG

            useradd egon666

            useradd egon

正则表达式:egrep –n ‘^[a-Z]+[0-9]+[a-Z]+’ /etc/passwd

   澳门金沙国际 33

 

7.来得出/etc目录下拥有包罗root的文书名

命令: grep –rl ‘root’ /etc/

   澳门金沙国际 34

 

8. 过滤掉/etc/ssh/sshd_config内享有注释和拥有空行

命令:grep -v ‘^#’ /etc/ssh/sshd_config |grep -v ‘^  *$’

   澳门金沙国际 35

 

 

 

 

 

相关文章