文本处理相关工具

文本工具

      操作系统中,文本的处理这一操作,比如操作一些内容,查看一些内容等等这些东西在linux中都得借助工具来完成对文本的操作。下面来说说对文本处理的工具;

 其中:

       查看文件内容工具:more、less、cat

       文件文本截取:head和tail

       按列抽取:cut

       按关键字抽取:grep

下面一一介绍一下

查看文件内容工具:

cat :查看文件内容并打印到屏幕上(默认动作) 

              当然我们可以使用管道或者输出重定向将默认输出机制更改    

选项及含义: 

-A:查看文件内容中的隐藏字符,如linux中的换行符" $ "
    [root@localhost testdir]# cat -A cat.txt 
    aaaaaaaa$
    bbbbbbbb$   //$为linux中的换行符
-n:显示文件内容时输出到屏幕加行号
    [root@localhost testdir]# cat -n cat.txt 
    1 aaaaaaaa
    2 bbbbbbbb     //为内容添加行号
-s:连续的空行压缩成一行
    [root@localhost testdir]# cat cat.txt 
    aaaaaaaa
    
    
    
    bbbbbbbb    //文件中空行很多
    [root@localhost testdir]# cat -s cat.txt 
    aaaaaaaa
    
    bbbbbbbb  //添加s选项连续的空行则被压缩成一行

cat还有个双胞胎兄弟,那兄弟有点叛逆,cat为正常顺序显示,而他的兄弟则是倒序显示其文件中的内容,那兄弟则是` tac` 命令.可以去尝试一下

more、less分页显示文件内容

查看文件时如果内容过于多而使用cat查看的话会屏幕会一扫而过,more和less则是用来避免这种情况的。但对于more和less则不能对显示出来的文件内容进行更改等操作。

more操作方法

      space(空格键):往下翻页

      enter(回车键):一行一行往下翻

less:分页查看文件 

      space(空格键):往下翻页

      enter(回车键):一行一行往下翻

      /:往下搜索字符串

在查看是直接键入此符号,在输出需要查找的字符,使用n/N进行上下查找

      ?:往上搜索字符串

在查看是直接键入此符号,在输出需要查找的字符,使用n/N进行上下查找

      n:使用/或?查找字符串是向上或向下依次查看

      N:使用/或?查找字符串是向上或向下依次查看

more和less的区别:

       more只能往下查看,不能回到首行重新查看,内容查看到底部是自动退出

       less则能上下翻动和查找字符串 ,退出需按‘ q ’键

文件文本截取:

       能对文件中的文本信息指定显示行

head:查看文件内容(截取首行往下的行数),默认不指定行数显示后10行

-n<数字>:指定显示内容的前几行;
    head  -n  num(要显示前几行) 文件(也可以不要-n选项,直接head -num  文件,即可)
        [root@localhost testdir]# head -n 2 /etc/passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        [root@localhost testdir]# head -2 /etc/passwd
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin    //两种用法是一个效果
-c<字符数>:指定显示首行的第几个字符;
       [root@localhost testdir]# head -c 10 /etc/passwd 
        root:x:0:0[root@localhost testdir]#  
         //截取文件中首行的10个字符,这里因为我们截取的前面的内容,而没有换行符产生的效果。

tail:查看文件内容(截取文件倒数的第几行),默认不指定行数显示后10行

用法则和head差不多,只不过是前或后的区别

其中tail -f 选项可以显示文件不退出,等待用户输入内容显示,

tail  -n0  -f  tail.txt &    

            //显示tail.txt文件倒数第0行,使用-f选项退出,等待其他用户输入内容到其内,并自动打印添加的内容到屏幕,“ & ”,此为后台执行命令,具体什么原理我也不太懂。 

按列截取文件内容

cut:截取文件内容中指定的列的内容

    cut [option]…  [file]…

-d: 以给定在-d选项后面的字符为分割符从而截取文件内容

     直接在-d后输入要用于分割的字符

-f:显示给定在-f选项后的内容

      三种使用方式

           1.#:直接指定单个字段(如:3则表示为第三段)

    2.#-#:指定连续的字段(如:1-3则表示为1到3的字段)

3.#,#:  指定离散的字段(如:1,3,5,则表示分别的1和3和5个字段)

例:

[root@localhost testdir]# cut -d: -f1,3,5 /etc/passwd
root:0:root      //-d后跟分割符,用于后面指定要截取第几段的参照物
bin:1:bin
daemon:2:daemon   //显示passwd文件中的以:号为分割的第1段,第3段,第5段
                
-c:显示给定的数字范围内的字符
   [root@localhost testdir]# cut -c 1-10 /etc/passwd
    root:x:0:0       // 截取passwd文件中第1个字符到第10个字符的内容
    bin:x:1:1:   
                               
--output-delimiter=STRING    
     将切出来的内容中的分割符更改为指定的分割符
    [root@localhost testdir]# cut -d: -f1,3 --output-delimiter=* /etc/passwd
     root*0
     bin*1     
//切掉第1和第3字段,其默认的分割符为冒号“*”使用此命令将原默认分割符更改为指定的分割符“ * ”

分析文本工具:

对文件进行分析查看其数据属性变化

文本数据统计: wc

整理文本: sort

比较文件: diff和patch

   

文本统计工具

wc:word count 单词统计

  不加选项统计文件的默认参数信息(行数、单词数、字节、文件名)

    wc [option]… [file]…

-l: 统计文本中的行数
    [root@localhost testdir]# wc -l less.txt 
    107 less.txt
    
-w:统计文本中的单词数
    [root@localhost testdir]# wc -w less.txt
    80 less.txt
    
-c:统计文件字节数
    [root@localhost testdir]# wc -c less.txt
    255 less.txt
    
-L:统计文件中内容最多的一行包含多少个字符 
      [root@localhost testdir]# wc -L less.txt
      4 less.txt

在命令行中直接输入wc命令,则会在命令中进入编辑默认,在内输入内容之后按 ^d 退出,wc会自动计算其行数、单词数、字节

文本排序工具

sort:文本排序

    对文件内容进行排序,而后打印到屏幕

sort [option]…  [file]…

      -t:指定分割符进行排序,配合其他选项使用

      -k:指定用于排序的字段

      -n:基于数值大小进行排序而非字符顺序

      -r:逆序排序

      -f: 忽略字符大小写

      -u:连续重复的内容只显示一个

:1.使用passwd文件的以冒号“ :”分割的第三个字段进行数值排序

[root@localhost testdir]# sort -t: -k 3 -n /etc/passwd 
root:x:0:0:root:/root:/bin/bash     
  //-t :指定分隔符为冒号“ :”  ;-k:指定以第三个字段进行排序;-n:进行数值从小到大排序
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
       ............

    2.使用passwd文件的以冒号“ :”分割的第三个字段进行数值大小的倒序显示

[root@localhost testdir]# sort -t: -k 3 -nr /etc/passwd      //-r 则为倒序显示
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
wang:x:508:508::/home/wang:/bin/bash
nologin:x:507:507::/home/nologin:/sbin/nologin
testbash:x:506:506::/home/testbash:/sbin/nologin
       ............

Uniq:唯一,其含义为删除重复

     -c:显示文件中重复行的次数

[root@localhost testdir]# uniq -c cat.txt   
      2 aaaaaaaa  
      2 bbbbbbbb
      1 cccccccc
      2 
      1 dddddddd
      2 
      2 eeeeeeec

     -u:仅显示不重复的行

[root@localhost testdir]# uniq -u cat.txt 
cccccccc
dddddddd

     -d:仅显示重复的行

[root@localhost testdir]# uniq -d cat.txt 
aaaaaaaa
bbbbbbbb
                  //此处两个空行为隔开的连个重复的空行
eeeeeeec

文件比较

diff:比较两个文件之间的区别

           diff命令在最简单的情况下,比较给定的两个文件的不同;diff命令是以逐行的方式,比较文本文件的异同处。

     diff [OPTION]… FILES

-u:显示两个文件详细的不同信息

    使用diff不加选项直接对比文件将不同之处打印到屏幕

例:1.比较两个文件的不同之处,不加选项

[root@localhost testdir]# diff less.txt less2.txt 
2d1
< bbbb    //此为两个文件中不同之处的内容

2.比较两个文件显示出详细不同信息

[root@localhost testdir]# diff -u  less.txt less2.txt 
--- less.txt2016-07-26 01:58:11.914942576 +0800
+++ less2.txt2016-07-26 01:57:55.244946816 +0800
@@ -1,2 +1 @@
 aaaa
-bbbb       //此为两个文件不同的详细信息,将第二个文件删此行则相同

patch:向文件打补丁

在比较出来的不同点保存到另一个文件中,如果误删用于比较的其中一个文件,可以用命令恢复误删的文件,用其中一个文件将另一个文件恢复

     -b:将打完补丁的文件自动备份,名称默认为原文件的后面加上.orig

两个文件,比较出不同之处之后将信息保存了,然后原用于比较的文件被误删,现用patch命令将其恢复
1.diff -u file1 file2 >file.patch  //将文件1和文件2比较出来的详细信息保存到file.patch中
2.rm -f  file2                     //删除文件2
3.patch -b file1 file.patch      
  //用文件1和比较出来的结果文件进行融合匹配,系统自动保存为file1.orig,此文件内容将和原有内容一样。

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