文本查找查找命令的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开头的行;

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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



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