文本处理相关工具

文本工具

      操作系统中,文本的处理这一操作,比如操作一些内容,查看一些内容等等这些东西在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

(0)
LiiLii
上一篇 2016-08-05
下一篇 2016-08-05

相关推荐

  • N25-第三周作业

      alias NAME='COMMAND'           定义命令的别名—对当前用户有效  un为解除别名 Which   查看命令别名 Whereis    查看程序的文档和源码路径(-b &nbs…

    Linux干货 2016-12-18
  • Linux用户和组管理

    使用对象:Linux初学者   Linux系统中用户和组管理是很重要的一部分内容。许多初学者在学习或刚接触到用户管理的时候会觉得很难理解,命令多、选项多、配置文件也多,用命令可以修改,用配置文件也可以修改,三两下就被绕进去了。其实完全没必要晕,只要了解了用户管理的方式,就会很容易理解命令选项与配置文件之间的关系。下面我们就来了解下用户管理命令与配置…

    Linux干货 2016-10-23
  • RHCE基础实验

    实验:配额实现 1. 启用配额功能 vim /etc/fstab defaults usrquota,grpquota mount -o remount /home 2. 创建配额数据库 quotacheck -cug /home 3. 启用数据库 quotaon /home quotaon -p /home 查看 4. edquota wang setqu…

    Linux干货 2017-05-02
  • Mariadb数据库复制系列(四):复制过滤器的实现

       实验四:复制过滤器的实现 复制过滤器的作用是让从节点仅复制主节点的指定的库,或指定数据库的指定表,而不是全部复制。其配置方式有两种,一种是在主节点上配置,通过定义主节点只记录部分库或表产生的二进制日志时间来实现;一种是通过从节点上配置,当复制了主节点的所有的二进制日志数据后,在SQL线程执行时,只执行指定的库或表相关的二进制日志时间;一般采取在从节点上…

    Linux干货 2016-11-24
  • TCP网络关闭的状态变换时序图

    TCP共有11个网路状态,其中涉及到关闭的状态有5个。 在我们编写网络相关程序的时候,这5个状态经常出现。因为这5个状态相互关联,相互纠缠,而且状态变化触发都是由应用触发,但是又涉及操作系统和网络,所以正确的理解TCP 在关闭时网络状态变化情况,为我们诊断网络中各种问题,快速定位故障有着非常重要的作用和意义。 下是是根据W.Richard Stevens的《…

    Linux干货 2015-04-03
  • linux常用网络配置

    网卡名称:  网络接口识别并命名相关的udev配置文件:    /etc/udev/rules.d/70-persistent-net.rules  卸载网卡驱动:    modprobe  -r e1000  装载网卡驱动:    modprobe &nbs…

    Linux干货 2016-09-06