首页 > 代码库 > 文本查找查找命令的grep 、egrep、fgrep用法的详解

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

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


一、学习目标

   了解并能熟悉运用grep、egrep、fgrep命令。

二、学习内容

1、grep、egrep、fgrep命令的意思和用法格式 :

     grep:是使用基本正则表达式定义的模式来过滤文本的命令。

                # grep [options] PATTERN  [FILE,...]

      egrep  :是使用扩展正则表达式的模式来过滤文本的命令。

                    # egrep [options] PATTERN  [FILE,...]

     fgrep:不支持正则表达式,是使用文字本身的意义的模式来过滤文本的命令。

                  # fgrep [options] PATTERN[FILE,...]

                注:PATTREN:  文本字符和正则表达式的元字符组合而成的匹配条件


2、grep命令常用的option

          -i : 忽略字符的大小写

          --color: 对pattern的内容加上颜色

          -v:显示没有被匹配的行

          -o:只显示被模式匹配到的字符串

          -E:使用扩展的正则表达式 ==egrep

          -F:==fgrep 

          -A n: 同时显示被pattern的内容的后n行 

          -B n:同时显示被pattern的内容的前n行 

          -C n: 同时显示被pattern的内容的前后n行 


3、了解什么是正则表达式

  正则表达式分为:基本正则表达式和扩展正则表达式

    (1)基本正则表达式有 :

        字符匹配: 

            . :表示匹配任意单个字符

           [] :表示匹配指定范围内的任意单个字符

           [^]:表示指定范围之外的任意单个字符

           [:space:]: 空白字符

           [:punct:]:标点符号

           [:lower:]:小写字母

           [:upper:]:大写字母

           [:alpha:]:大小写字母

           [:digit:]:数字

           [:alnum:]:数字和大小写字母 

      匹配次数:

            *: 匹配其前面字符任意次

            .*:匹配前面字符任意长度和任意次数

            \? :匹配前面的字符一次或0次

            \{m,n\}:匹配前面字符至少m次,至多n次

      位置锚定:

            ^:锚定行首,此字符后面的任意内容必须出现在行首

            $:锚定行尾,此字符前面的任意内容必须出现在行尾

            ^$:空白行,

            \<:其后面的内容必须作为单词的首部出现

            \>: 其前面的内容必须作为单词的尾部出现

      分组:

             \(\) : 将括号的内容作为一个整体

                    \1 : 指第一个左括号和与之对应的右括号的所有内容

                    \2: 指第二个左括号和与之对应的右括号的所有内容

                    .....

   

    (2)扩展的正则表达式:

        字符匹配:(与基本的正则表达式中的相同)

        次数匹配: 

                    *:匹配其前面字符任意次 

                    ?:匹配前面的字符一次或0次

                    +:匹配前面字符至少一次

                    {m,n}:匹配前面字符至少m次,至多n次

         锚定匹配:(与基本的正则表达式中的相同)

            分组: ():把括号里的内容作为一个整体  \1 \2 \3 ....

            或者:   | :表示或者  

                      

             

4、命令的使用演示

----------------------------------------------------------------------

1、显示/proc/meminfo文件中以不区分大小的s开头的行;

wKioL1PPxgziGJPRAACvG_o3Dg8364.jpg

2、显示/etc/passwd中以nologin结尾的行; 

wKiom1PPxQfzp9jSAAPgWimOpYQ344.jpg    

   取出默认shell为/sbin/nologin的用户列表 

wKioL1PPxjaAb6fqAADviBzE9qU389.jpg

   取出默认shell为bash,且其用户ID号最小的用户的用户名

wKiom1PPxTDi-iGWAABth_8MnDk892.jpg

3、显示/etc/inputrc中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;

wKioL1PPxmCzFWErAAEu9UgOCQU114.jpg

4、显示/etc/passwd中包含了:一个数字:(即两个冒号中间一个数字)的行;

wKiom1PPxebxmIl0AAFMKGBOqWk500.jpg


5、显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;

wKioL1PPxuLSLijxAAD33ttdrEM610.jpg

7、找出/proc/cpuinfo文件中的,1位数和2位数

wKiom1PPxfvB55gYAADVOLec7Co898.jpg

8、找出ifconfig命令结果中的1-255之间的整数;

wKioL1PPxyLzXv_JAAHEQaNgjwQ131.jpg

9、查找当前系统上名字为student(必须出现在行首)的用户的帐号的相关信息,  文件为/etc/passwd

wKioL1PPx0jhEtcfAABe2HDgo20730.jpg

11、显示所有以小写字母开头且数字结尾且文件名中不包含空白的文件;

wKiom1PPxjnxU8RkAADul40C_HU940.jpg



    如果大家看了这文章觉得有问题,欢迎提出来,也欢迎大家来一起讨论,一起提高! 



本文出自 “迷路的骚年” 博客,请务必保留此出处http://8855546.blog.51cto.com/8845546/1528490