而正则表达式则是由命令解释的,每个用户登录

2019-10-06 15:40 来源:未知

大家在学习正则表达式之前,首先要明确一点,并把它牢牢记在心里,那就是:

shell编程之grep命令的使用,grep命令的使用

大家在学习正则表达式之前,首先要明确一点,并把它牢牢记在心里,那就是:

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

通常有三种文本处理工具/命令:grep、sed、awk,它们三者均可以解释正则。下面我就为大家介绍grep命令的使用方法。

 

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

grep和egrep命令能够在一个或多个文件的内容中搜索某一特定的字符模式,也被称为正则表达式(regular expressions)。一个模式可以是一个单一的字符、一个字符串、一个单词或一个句子。

一个正则表达式是描述一组字符串的一个模式。正则表达式的构成是模仿了数学表达式,通过使用操作符将较小的表达式组合成一个新的表达式。一个正则表达式既可以是一些纯文本文字,也可以是用来产生模式的一些特殊字符。为了进一步定义一个搜索模式,grep命令支持以下几种正则表达式的元字符,也称通配符。

ps:正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。

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

.:将匹配任何一个且只能是一个字符(换行符除外)

[xyz]:将匹配方括号中的任意一个字符

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

^:锁定行的开头

$:锁定行的结尾

在基本正则表达式中,如元字符*、+、{}、|、和()已经失去了它们原来的意义,如果要回复他们原本的含义要在之前冠以反斜线,如*、+等。

grep命令是用来在每一个文件中或标准输出上搜索特定的模式。当使用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命令的结果将显示每一个包含匹配模式的行。

 

上面就是grep命令的基本使用方法。但是有时一个简单的正则表达式无法定位你要搜索的内容,如要搜索同时满足模式一和模式二的数据行,这时egrep命令就可以派上用场。

egrep命令的语法格式和grep命令相同。但是egrep命令是用来在一个或多个文件的内容中利用扩展的正则表达式的元字符搜索特定的模式。扩展的正则表达式的元字符包含了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中那些行含有root,并将行号一块输出

永利平台娱乐 4

 

例五:

新建用户abominable、abominate、anomie、atomize,编写正则表达式,将他们匹配出来

 

 

例六:新建用户Alex213sb、Wpq2222b、yH438PIG、egon666、egon过滤出用户名组成是字母+数字+字母的行

永利平台娱乐 5

 

例七:显示出/etc目录下所有包含root的文件名

永利平台娱乐 6

 

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

永利平台娱乐 7

 

以上例子只是很小的一部分,大家只要勤加练习,一定很快就能掌握grep命令的使用啦 ^^

 

大家在学习正则表达式之前,首先要明确一点,并把它牢牢记在心里,那就是: 在linux中,通配...

一、环境边量

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

每个用户登录shell需要执行的四个文件

通常有三种文本处理工具/命令:grep、sed、awk,它们三者均可以解释正则。下面我就为大家介绍grep命令的使用方法。

  /etc/profile

 

  /home/egon/.bashrc_profile

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

  /home/egon/.bashrc

grep和egrep命令能够在一个或多个文件的内容中搜索某一特定的字符模式,也被称为正则表达式(regular expressions)。一个模式可以是一个单一的字符、一个字符串、一个单词或一个句子。

  /etc/bashrc

一个正则表达式是描述一组字符串的一个模式。正则表达式的构成是模仿了数学表达式,通过使用操作符将较小的表达式组合成一个新的表达式。一个正则表达式既可以是一些纯文本文字,也可以是用来产生模式的一些特殊字符。为了进一步定义一个搜索模式,grep命令支持以下几种正则表达式的元字符,也称通配符。

非登录shell加载的文件

ps:正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。

  /home/egon/.bashrc

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

  /etc/bashrc

.:将匹配任何一个且只能是一个字符(换行符除外)

要固化一个配置时在哪种登录下生效,就显而易见的知道该写在哪个文件里了

[xyz]:将匹配方括号中的任意一个字符

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

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

如果不管哪种登录都想使用的变量就设置在/etc/bashrc中

^:锁定行的开头

添加语句:(以python3为例)

$:锁定行的结尾

  PATH=/usr/local/python3:$PATH

在基本正则表达式中,如元字符*、+、{}、|、和()已经失去了它们原来的意义,如果要回复他们原本的含义要在之前冠以反斜线,如*、+等。

  export PATH

grep命令是用来在每一个文件中或标准输出上搜索特定的模式。当使用grep命令时,包含一个指定字符模式的每一行都会被打印在屏幕上,grep命令的语法格式如下:

 

grep 选项 模式 文件名

二、bash中元字符:

其中,选项可以改变grep命令的搜索方式,除了-w选项外,其他的每个选项都可以在egrep和fgrep命令中使用。grep命令常用选项如下:

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

-c(count):仅列出包含模式的行数

      元字符是被shell解释的

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

`` 命令替换取命令的执行结果

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

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

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

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

-v:列出没有匹配模式的行(取反)

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

-w:把表达式当做一个完整的单字来搜索,忽略那些部分匹配的行

~ 家目录

-q  :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容

! 取非/匹配最近一次历史命令

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

! ls 带空格将命令的返回值取反

-B n  :如果匹配成功,则将匹配行及其前n行一起打印出来

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

-C n  :如果匹配成功,则将匹配行及其前后n行一起打印出来

      ok

ps:如果搜索的是多个文件,grep命令的结果只显示在文件中发现匹配模式的文件名;

      [root@ ~]# echo $?

      如果搜索的是单个文件,grep命令的结果将显示每一个包含匹配模式的行。

      1

 

@ 无特殊含义

上面就是grep命令的基本使用方法。但是有时一个简单的正则表达式无法定位你要搜索的内容,如要搜索同时满足模式一和模式二的数据行,这时egrep命令就可以派上用场。

# 永利平台娱乐,注释

egrep命令的语法格式和grep命令相同。但是egrep命令是用来在一个或多个文件的内容中利用扩展的正则表达式的元字符搜索特定的模式。扩展的正则表达式的元字符包含了grep命令中使用的正则表达式元字符的同时,还增加了一些额外的元字符,大致有下面几个:

$ 变量取值

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

$() 同``

a|b:匹配a或b

${} 变量名的范围

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

$[] 整数计算    

 

& 后台执行;&& 逻辑与     

下面我将通过一些基本的例子来增进大家对grep和egrep命令用法的了解。鉴于grep命令中所有的选项egrep都能够使用(egrep更加强大),为方便起见我将使用egrep命令为大家演示:

* 匹配任意长度字符串;计算乘法

例一:显示出文件/etc/passwd含有root的行

() 在子进程中执行 

永利平台娱乐 8

"" 软引 ''硬引

 

; 可以接多个命令   

例二:输出/etc/passwd中任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容

: 空命令真值   

永利平台娱乐 9

| 管道; || 逻辑或

 

转义;

例三:显示出/etc/passwd中有多少行含有nologin

{} 命令列表,注意括号内的开头和结尾必须是空格{    ls; cd /;   }

永利平台娱乐 10

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

 

     

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

三、正则表达式

永利平台娱乐 11

正则:用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。

 

        或者说:正则就是用来描述一类事物的规则。

例五:

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

TAG标签:
版权声明:本文由永利平台娱乐发布于每日更新,转载请注明出处:而正则表达式则是由命令解释的,每个用户登录