初学linux的文件处理工具中,分为了两类处理工具:

   一.取行,又称之为投影

      1.wc(word count) [options] PATH 可以看作是一个行统计工具

         -l:只显示行数;

         -w:只显示单词数;

         -c:只显示字节数;

      2.tr(translate):必须使用输入重定向.

         -d"字符集合",把出现在文件属于字符集合的字符统统删除。

      3.cut:文件切割,最常用的功能是能够使用指定的符号作为行的分隔符,将每一行切片,而只取出某些片.

        cut [options] PATH

             -d:分隔符,默认的分隔符是空格.

             -f:取第几个分隔符.

   二.取列,也称之为选择;

     grep:Global search Regular Expression and Printing.

      既然要学习如何使用正则表达式来进行条件选择,那么首先要从元字符开始。

元字符:不表示字符本身的意义,而用于额外功能性描述的字符.

      对于基本的正则表达式和扩展的正则表达式还是有少许的不同点:

      1.基本的正则表达式;贪婪模式(尽可能长的去匹配符合模式的内容)

        grep [options] "PATTERN" PATH  所谓的PATTERN就是我们用正则表达式来做的条件。

        [options]:

            -v:条件取反;

                e.g#grep -v "^$" /etc/rc.d/rc.sysinit

                    显示这个文件里面的非空行.

            -o:只显示匹配的字符,而不是整行;

            -A:显示匹配到的行时,顺带显示其后面的#个行;

            -B:显示匹配到的行时,顺带显示其前面的#个行;

            -C:前后的#行;

            -i:不区分大小写;

            -r:递归查找;

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

         元字符:(里面引用一些管道的概念,也就是头一次的输出即为第二个的输入)

^STRING:锚定行首符合条件的内容;

从这里可以得知所谓的管道在这里就是将grep执行后的结果传給wc.

          STRING$:锚定行尾符合条件的内容;

^$:锚定空白字符自成一行的内容

\<:锚定词首;

\>:锚定词尾;

\<Pattern\>:锚定单词

\(Pattern\):(分组)当作一个整体去匹配

                   e.g#grep "\(ab\)\{1,3\}" PATH

                       以ab作为整体出现1~3次.

                   要求后面的l..e要等于前面的l..e

                   记为:grep "\(l..e\).*\1"

.:匹配任意单个字符;

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

.*:匹配任意长度的任意字符;

[]:匹配指定范围内的任意字符;

? :匹配在其前面的字符0~1次;

\{m,n\}匹配其前面的字符最少m次,最大n次;

                such: \{3,\}匹配其前面最少三次,

                      \{m\}:精确匹配m次.

                      grep "[Bb]\{2,5\}[Tt]" :匹配前面是B或者t开头的2~5次,并且后跟t;

[^]:匹配指定范围外的任意字符;

              字符集合:

                  [a-z],[0-9],[A-Z]

                  [a-zA-Z0-9]

                  [:digit:]:0-9

                  [:upper:]:A-Z

                  [:lower:]:a-z

                  [:punct:]:符号

                  [:space:]:空格

                  [:alpha:]:大小写字符

                  [:alnum:]:大小写数字

      2.扩展的正则表达式;Egrep = grep -e

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

.:任意单个字符;

[]:匹配指定范围内的单个字符;

[^]:匹配指定范围外的单个字符;

:匹配任意字符0~1次;

^ :锚定行首;

$ :锚定行尾;

\<:匹配词首;

\>:匹配词尾;

():匹配整体; 区别于基本的正则表达式

\{m,n\}:最少m次,最多n次;

a|b:a或者b,二选一

such:

          在/proc/meminfo文件里面找到以s或者S为行首的地方.

          我们需要把s|S看作是一个整体,所以要用上括号,

          否则就是认为是(^s)|S的意义了。

           在 grep.txt这个文件里面找到以a开头,但是a至少出现1一次以上,后面跟上b的串。