8-4 文本处理工具

本节主要了解文本处理工具




文件查看命令:cat  tac  rev

    cat [OPTION]… [FILE]…

        -E:显示行结束符$

        -n:对显示出的每一行进行编号

        -A:显示所有控制符

        -b:非空行编号

        -s:压缩连续的空行成一行

图片1.png

tac:倒着显示内容

rev:倒着显示内容,同一行内也倒着

 

分页查看文件:more

     more [OPTIONS…] FILE…

         -d:显示翻页及退出提示

  less :一页一页地查看文件或STDIN 输出

查看时有用的命令包括:

       /文本  搜索 文本

       n/N:跳到下一个 or  上一个匹配

 less 命令是man命令使用的分页器

 

显示文本前或后行内容

 head [OPTION]… [FILE]…

     -c #:指定获取前#字节

     -n #:指定获取前#行

     -#:指定行数

图片2.png

 tail [OPTION]… [FILE]…

      -c #:指定获取后#字节

      -n #:指定获取后#行

      -#:

      -f:跟踪显示文件新追加的内容,常用日志监控

图片3.png

 

文本内容切割:cut  

    cut [OPTION]… [FILE]…

       -d delimiter:  指明分隔符

        -f fileds:指明需要取出的字段

            #:第#个字段

            #,#,# :离散的多个字段,例如1,2,3

            #-#:连续的多个字段,  例如1-6

            混合使用:1-3,7,9,10-13

            -c 按字符切割

            –output-delimiter=STRING 指定输出分隔符

图片4.png

 

 合并文件

      paste  合并两个文件同行号的列到一行

      paste [OPTION]… [FILE]…

          -d:分隔符: 指定分隔符,默认用TAB

          -s:所有行合成一行显示

图片5.png

 

字符统计:wc

wc [OPTION]…[FILE]…

   -l:统计行数

   -w:统计单词个数

   -c:统计字符个数

   -m:只计字符总数

图片6.png

其中1是行数,2是单词个数,7是字符数

 

 

文本排序:sort

  把整理过的文本显示在STDOUT ,不改变原始文件

   sort [OPTION]… [FILE]…

    -r:逆序

    -n:以数字大小进行排序

    -f:忽略字符串中的字符大小写

    -u:删除输出中的重复的行

    -t c:使用c 做为字段界定符

    -k #:以指定字段为标准排序

图片7.png

取第三列以数字大小排列

 

从输入中删除重复的前后相接的行:uniq

    uniq [OPTION] …[INPUT[OUTPUT]]

            -c:显示每行重复的次数

            -d:仅显示重复的行

            -u:仅显示不重复的行

 

grep

   文本过滤( 模式:pattern) 工具;grep, egrep, fgrep (不支持正则表达式)

   作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行;

   模式:由正则表达式字符及文本字符所编写的过滤条件

   grep [OPTIONS] PATTERN [FILE…]

   –color=auto:  对匹配到的文本着色显示;

  -v:显示不能够被pattern 匹配到的行;

  -i:忽略字符大小写

  -n:显示匹配的行号

  -c:统计匹配的行数

  -o:仅显示匹配到的字符串;

  -q:静默模式,不输出任何信息

  -A #after,匹配到的后#

  -B #before,匹配到的前#

  -C #context,匹配到的前后各#

  -e:实现多个选项间的逻辑or 关系

       grep  -e cat -e dogfile

  -w :整行匹配整个单词

  -E :使用ERE,支持使用扩展的正则表达式

图片8.png

 

元字符:

      字符匹配:

          . :匹配任意单个字符

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

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

               表达方法:

                   [:alnum:]:表示所有字母和数字

                   [:alpha:]:表示所有的字母(不区分大小写)

                   [:digit:]:表示所有的数字

                   [:lower:]:表示所有的小写字母

                   [:upper:]:表示所有的大写字母

                   [:space:]:表示所有的空白符号

                   [:punct:]:表示所有的标点符号

      次数匹配:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

          *:匹配前面的字符任意次,包括0次 次

              默认正则表达式是工作在贪婪模式下,尽可能长的匹配

          .* :任意长度的任意字符

          \? :匹配其前面的字符0 1次,即可有可无

          \+ :匹配其前面的字符至少1

          \{m\} :匹配前面的字符m

          \{m,n\} :匹配前面的字符至少m 次,至多n次(小于等于,大于等于)

          \{0,n\} :匹配前面的字符至多n

          \{m,\} :匹配前面的字符至少m

     位置锚定:对特定位置进行定位

         ^:行首锚定,用于模式的最左侧

         $:行尾锚定,用于模式的最右侧

         ^PATTERN$:用于模式匹配整行

             ^$:空行,不包含有空格的行

             ^[[:space:]]*$:空白行,包含有空格的行

          \< 或 或 \b:词首锚定,用于单词模式的左侧

          \> 或 或 \b:词尾锚定;用于单词模式的右侧

          \<PATTERN\>:匹配整个单词

         分组:是指将一个或多个字符捆绑在一起,当做一个整体进行处理

               符号是: \(\):

                   如:\(xy\)*ab 表示xy这个整体可以出现无数次

图片9.png

       查找出passwd文件中,r后跟任意小写字母再跟t的字符

扩展正则表达式元字符:

     字符匹配:

         .:任意单个字符

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

         [^]:不在指定范围内的单个字符

次数匹配:

    *:任意次

    ?:0次或1

    +:至少1

    {m}:精确匹配m

    {m,n}:至少m次,至多n

    {m,}:至少m

    {0,n}:最多n

 分组:

     ():用括号括起来表示要引用的内容,不需要转义

 或者:

      a|b:a或者b

原创文章,作者:Dadi,如若转载,请注明出处:http://www.178linux.com/30763