文本处理相关工具

文本工具

      操作系统中,文本的处理这一操作,比如操作一些内容,查看一些内容等等这些东西在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)
上一篇 2016-08-05 16:13
下一篇 2016-08-05 16:13

相关推荐

  • Linux文件查找命令详解

    Linux中在文件系统上查找符合条件的文件,实现工具有locate和find locate: 1.它是依赖于事先索引构建好的数据库进行查找的。更新它的数据库有两种方式,一种是系统定期自动更新,另一种是执行命令updatedb手动更新数据库。 注意:索引构建过程需要遍历整个根文件系统,极消耗资源 2.它的工作特性: 1.因为是基于数据库实现的,所以查找速度快(…

    Linux干货 2017-04-10
  • bash工作特性之命令执行状态返回值与命令行展开概述

    bash工作特性之命令执行状态返回值与命令行展开概述 bash是什么? shell是一种用户接口程序,提供了用户与内核进行交互的接口。shell可以分为两类:一类为GUI,即用户图形界面;另一类为CLI,即命令行接口,将用户的命令送入到内核去执行,大多数发行版中最常用的就是bash。 bash特性 命令执行状态返回值 bash通过状态返回值来输出结果: 命令…

    Linux干货 2017-07-09
  • 8月2日作业

    在/data/testdir里创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。 [root@localhost ~]# groupadd g1 [root@localhost ~]# groupadd g2 [root@local…

    Linux干货 2016-08-05
  • 考试题目

    1、  简述TCP三次握手四次挥手过程及各过程中客户端和服务器端的状态。 TCP三次握手,四次断开通过以下图示说明: 2、说说进程和线程的区别 (1)一个线程只能输入某一个进程,一个进程可以有多个线程。一个程序至少有一个进程,一个进程至少有一个线程。 (2)进程有独立的地址空间,线程没有独立的地址空间,进程内的多个线程共享进程的地址空间。 (3)线…

    Linux干货 2016-06-19
  • shell编程、yum的使用

    shell编程、yum的使用 一、shell编程 1、while的特殊使用 while 循环的特殊用法(遍历文件的每一行): while read line; do      循环体 done < /PATH/FROM/SOMEFILE   依次读取/PATH/FROM/SOMEFILE 文件…

    Linux干货 2016-08-21
  • select应用详解及rpm、yum使用说明

    一.select相关用法解析 1.select variable in list;do   变量不用加$,和for极为相似         循环体     done 2.    (1)sel…

    Linux干货 2016-08-29