shell脚本学习(五)

1、统计文件的行数、单词数、字符数

  1)行数:

      wc -l file

       cat file | wc -l

  2)单词数

     wc -w file

     cat file | wc -w

  3)统计字符数

     wc -c file

     cat file | wc -c

 4)不跟任何参数时,三者都打印,打印顺序为行数、单词数、字符数

     wc file

     hbg@root:~/dl$ wc a.txt
       6  6 36   a.txt

     hbg@root:~/dl$ cat a.txt
    apple
    gold
    iron
    orange
    silver
    steel
 hbg@root:~/dl$

   5)打印文件中最长一行

       wc -L file

2、正则表达式

   1) “?”用于匹配单词前后可能出现的空格

          例如:要匹配给定文本中的所有单词,可以使用下面的正则表达式:

                 ( ?[a-zA-Z]+ ?)            [a-zA-Z]代表一个字母或者多个字母(a-z 和 A-Z)

   2)正则表达式                  描述                    示例

       ^                              行起始标记                                              ^tux匹配以tux起始的行

       $                     行尾标记                                             tux$匹配以tux结尾的行

       .              匹配任意一个字符               hack. 匹配hackl和hacki,但是不能匹配hackl2和hacki1,它只能匹配单个字符

       []           匹配包含在[字符]之中的任意一个字符           coo[kl] 匹配cook 或 cool

       [^]            匹配除[^字符]之外的任意一个字符        9[^01] 匹配92、93,但是不匹配90和91

       [-]             匹配[]中指定范围内的任意一个字符               [1-5]匹配从1~5的任意一个数字

       ?           匹配之前的项一次货0次                colou?r匹配 color或colour但是不能匹配colouur

       +          匹配之前项一次或多次            rollno-9+匹配rollno-99、rollno-9,但是不能匹配rollno-

       *                             匹配之前的项0次或多次            co*l 匹配 cl、col、cooool等

       ()           创建一个用于匹配的子串            ma(tri)?x匹配 max 或 matrix

       {n}          匹配之前的项n次                [0-9]{3}匹配任意一位3位数,可以扩展为[0-9][0-9][0-9]

       {n,}         之前的项至少需要匹配n次          [0-9]{2,}匹配任意一个两位或更多位的数字

       {n,m}       指定之前的项必须匹配的最小次数和最大次数      [0-9]{2,5}匹配一个2位数到5位数之间的任意一个数字

       |          交替--匹配 | 两边的任意一项         Oct (1st | 2nd) 匹配Oct 1st或Oct 2nd

                                   转义符可以将上面介绍的特殊字符进行转义         a.b匹配 a.b,但不能匹配ajb。通过在.之前加上前缀\,从而忽略了.的特殊意义     

         

原文地址:https://www.cnblogs.com/rohens-hbg/p/5089849.html