文本处理相关工具

文本工具

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

相关推荐

  • 计算机组成及功能

    计算器:进行逻辑和算数运算 控制器:读取,接受,发出控制指令 存储器:存取程序和数据 I/O设备:输入指令并显示到标准输出设备

    Linux干货 2018-03-03
  • 20160802学习笔记

    useradd相关补充:      1.新建一个用户创建时的一些默认权限在/etc/default/useradd配置中      2.新建用户家目录的过程实际就是将/etc/skel中的所有文件,拷贝到新建用户的/home下,并更改为改用户的用户名   &n…

    Linux干货 2016-08-03
  • Linux启动过程及系统初始化

    一、前言     服务器在正常的运行过程中,很少有重启的机会。在正常的情况下,也很少有出现启动异常的情况,但是在遭到了人为或者误操作的情况后,可能会出现启动异常的情况。为了加深学习系统启动流程,能够更加深入理解Linux系统的启动流程。总结了这篇文字。 二、简述启动流程     …

    Linux干货 2016-11-23
  • DNS 正反向解析 主从配置

    我的环境是     192.168.1.130    主DNS      192.168.1.112    从DNS DNS 的安装包有bind bind-libs bind-utils 安…

    Linux干货 2016-01-05
  • CentOS 系统自动化安装

    CentOS 系统自动化安装 概述:     系统安装过程     配置anaconda     自动化安装系统 CentOS 系统安装: 1.启动流程: bootloader–>kernel(initrd)–>rootfs–>anaconda(…

    Linux干货 2016-09-21
  • Homework Week-8 网络及脚本编程

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 设备 功能 使用场景 网桥 用于连接不同网段,将相似的网络连接起来,隔离信息。 连接不同部门间的局域网;连接地理位置分散并且相距较远的局域网,可以增加工作的物理距离;采用由网桥连接的多个局域网调节负载;网桥可以设置在局域网的关键部位,防止单点失常而破坏整个系统等。 集线器 对接收…

    Linux干货 2016-10-09