• 第5章:文本处理


    5章:文本处理

    5.1、cat拼接功能

    cat是命令行家必学的命令之一,cat通常用户读取、显示或拼接文件内容,不过cat所具备的功能远不止这些。

    cat 三大功能

    cat功能一:

    范例1:显示文本内容

    [root@cloucentos6 home]# cat file

    testtest

    cat 功能二:

    范例2从键盘创建一个文本,结束按ctrl+c结束文本输入

    [root@cloucentos6 home]# cat file

    testtest

    testtest

    [root@cloucentos6 home]# cat file

    testtest

    testtest

    cat功能三:

    范例3把a1和a2两个文本内容拼接同时显示出来。

    [root@cloucentos6 home]# cat a1

    11111

    [root@cloucentos6 home]# cat a2

    22222

    [root@cloucentos6 home]# cat a1 a2

    11111

    22222

    cat常用参数

    cat  –[选项]  [文件]

    cat  -n  file  #显示file文本内容并对所有输出标记行号,以1开始记数

    cat  -s  file  #当遇到file文本有两行以上的空白行就压缩成一行的空白行显示

    cat  -T  file  #显示file文本内容时遇到制表符(Tab)就在前面标记 ^I

    cat  -b  file  #显示file文本内容对非空白行标记行号,以1开始记数

    范例4去掉空白行并标记行号

     [root@cloucentos6 home]# cat file2

    11111

    22222

    33333

    444444

    55555

    66666

    [root@cloucentos6 home]# cat -b file2 | tr -s ' '

         1     11111

         2     22222

         3     33333

         4     444444

         5     55555

         6     66666

    5.2、排序文本

    sort默认将文本每一行作为一个单位,而且默认以字符串形式来排序,依次按ASCII码进行排序,最后将他们以升序输出。

    范例1:sort默认按ASCII码排序 ,默认按字符串形式进行排序

    [root@cloucentos6 home]# cat file.txt

    999

    5675

    2223

    6789

    a1a2

    bbb

    cd23

    [root@cloucentos6 home]# sort file.txt

    2223

    5675

    6789

    999

    a1a2

    bbb

    cd23

    sort  –n 使用纯数字进行排序

    范例2: 默认升序

    [root@cloucentos6 home]# cat file.txt

    322

    411

    833

    120

    010

    [root@cloucentos6 home]# sort -n file.txt

    010

    120

    322

    411

    833

    sort  -r 降序排序

    范例3:按纯数字并且以降序进行排序

    [root@cloucentos6 home]# cat file.txt

    10

    2

    1

    77

    0

    [root@cloucentos6 home]# sort -nr file.txt

    77

    10

    2

    1

    0

    sort  -k 依据键或列进行排序

    范例4依据第一列列号(键)按纯数字降序进行排序

    [root@cloucentos6 home]# cat file.txt

    1  zhou  1000

    2  xiao  9000

    3  hong  2000

    4  zhang 5000

    [root@cloucentos6 home]# sort -nrk 1 file.txt

    4  zhang 5000                                           

    3  hong  2000

    2  xiao  9000

    1         zhou  1000

    范例5依据第三列列号(键)按纯数字进行排序

    [root@cloucentos6 home]# cat file.txt

    1  zhou  1000

    2  xiao  9000

    3  hong  2000

    4  zhang 5000

    [root@cloucentos6 home]# sort -nk 3 file.txt

    1  zhou  1000

    3  hong  2000

    4  zhang 5000

    2         xiao  9000

    范例6依据第一列(键)第3个字符或第4个字符并按纯数字进行排序

    [root@cloucentos6 home]# cat file.txt

    1234

    6089

    5428

    0001

    [root@cloucentos6 home]# sort -nk 1.3 file.txt

    0001

    5428

    1234

    6089

    [root@cloucentos6 home]# sort -nk 1.4 file.txt

    0001

    1234

    5428

    6089

    sort  -d 忽略最前面的空格符部分

    范例7:

    [root@cloucentos6 home]# cat file.txt

    120

       110

           999

    [root@cloucentos6 home]# sort -nb file.txt

       110

    120

           999

    sort  –t 分隔符,默认是使用tab键分隔

    范例8:以冒号 : 为分割符按第二列纯数字进行排序

    [root@cloucentos6 home]# cat file.txt

    u:01:gun

    d:04:linux

    u:09:bash

    u:03:back

    [root@cloucentos6 home]# sort -t ':' -nk 2 file.txt

    u:01:gun

    u:03:back

    d:04:linux

    u:09:bash

    sort  -u 相同的数据只显示一行,uniq命令消除重复内容

    范例9

    [root@cloucentos6 home]# cat file.txt

    999

    999

    333

    333

    111

    111

    111

    222

    [root@cloucentos6 home]# sort -u file.txt

    111

    222

    333

    999

    [root@cloucentos6 home]# uniq file.txt

    999

    333

    111

    222

    [root@cloucentos6 home]# sort file.txt | uniq

    111

    222

    333

    999

    [root@cloucentos6 home]# sort file.txt | uniq –c   #计数唯一排序后的康

          3 111

          1 222

          2 333

          2 999

    [root@cloucentos6 home]# sort file.txt | uniq –d   #仅显示重复的记录

    111

    333

    999

    [root@cloucentos6 home]# sort file.txt | uniq –u    #仅显示未重复的记录

    222

    范例10统计各行在文件中出现的次数

    [root@cloucentos6 home]# cat file.txt

    999

    999

    333

    333

    111

    111

    111

    [root@cloucentos6 home]# sort file.txt | uniq -c

          3 111

          2 333

          2 999

    [root@cloucentos6 home]# uniq file.txt -c

          2 999

          2 333

          3 111

    范例11找出文件中重复的行

    [root@cloucentos6 home]# cat file.txt

    999

    999

    333

    111

    111

    111

    [root@cloucentos6 home]# sort file.txt | uniq -d

    111

    999

    [root@cloucentos6 home]# sort file.txt | uniq -dc

          3 111

          2 999

    [root@cloucentos6 home]# uniq -dc file.txt

          2 999

          3 111

    5.3paste命令按列合并

    范例1cat 打印多个文本按行拼接打印,pastte打印多个文本按列拼接打印。

    [root@cloucentos6 home]# cat  font.txt

    my name is zhanghong.

    zhaonghong is man.

    [root@cloucentos6 home]# cat  font2.txt

    my name is xiaoming.

    xiaoming is man.

    [root@cloucentos6 home]# cat  font.txt  font2.txt

    my name is zhanghong.

    zhaonghong is man.

    my name is xiaoming.

    xiaoming is man.

    [root@cloucentos6 home]# paste  font.txt  font2.txt

    my name is zhanghong.  my name is xiaoming.

    zhaonghong is man.         xiaoming is man.

    范例2paste   -d 选项指定定界符

    [root@cloucentos6 home]# cat  font.txt

    my name is zhanghong.

    zhaonghong is man.

    [root@cloucentos6 home]# cat  font2.txt

    my name is xiaoming.

    xiaoming is man.

    [root@cloucentos6 home]# paste  font.txt  font2.txt  -d "/ "

    my name is zhanghong./my name is xiaoming.

    zhaonghong is man./xiaoming is man.

    5.4tac命令逆序形式打印行

    范例: 是默认的行分隔符,-s选项定义分隔符选项

    [root@cloucentos6 home]# cat -n font2.txt

         1     my name is xiaoming.

         2     xiaoming is man.

    [root@cloucentos6 home]# cat -n font2.txt | tac

         2     xiaoming is man.

         1     my name is xiaoming.

    5.5wc统计文件的行数、单词数和字符数

    范例1统计行数

    [root@cloucentos6 home]# cat font.txt

    abc

    a1

    b2

    tom22key

    hello world!

    [root@cloucentos6 home]# wc -l font.txt

    5 font.txt

    [root@cloucentos6 home]# cat font.txt | wc -l

    5

    范例2统计单词数

    [root@cloucentos6 home]# cat font.txt

    abc

    a1

    b2

    hello world

    [root@cloucentos6 home]# wc -w font.txt

    5 font.txt

    [root@cloucentos6 home]# cat font.txt | wc -w

    5

    范例3统计字符数,文本换行符号算两个字符

    [root@cloucentos6 home]# cat font.txt

    a1

    a2

    [root@cloucentos6 home]# wc -c font.txt

    8 font.txt

    [root@cloucentos6 home]# cat font.txt | wc -c

    8

    [root@cloucentos6 home]# wc font.txt       #wc默认会打印出行数、单词数和字符数

    2 2 8 font.txt

    5.6headtail打印文件前10行和后10

    范例1head命令默认打印前10行

    [root@cloucentos6 home]# wc -l font.txt

    54 font.txt

    [root@cloucentos6 home]# head font.txt | cat -n

         1     abccddd1111111

         2     abccddd1111111

         3     abccddd1111111

         4     abccddd1111111

         5     abccddd1111111

         6     abccddd1111111

         7     abccddd1111111

         8     abccddd1111111

         9     abccddd1111111

        10     abccddd1111111

    范例2head –n 打印指定前几行

    [root@cloucentos6 home]# wc -l font.txt

    54 font.txt

    [root@cloucentos6 home]# head -n 4 font.txt | cat –n    #打印前4行

         1     abccddd1111111

         2     abccddd1111111

         3     abccddd1111111

         4     abccddd1111111

    [root@cloucentos6 home]# head -n -51 font.txt | cat –n    #打印除最后53行之外的所有行

         1     abccddd1111111

         2     abccddd1111111

         3     abccddd1111111

    范例3tail命令默认打开最后10行

    [root@cloucentos6 home]# wc -l font.txt

    54 font.txt

    [root@cloucentos6 home]# tail font.txt

    abccddd1111111

    ddeeee22222222

    abccddd3333333

    abccddd5555555

    abccddd1111111

    abccddd1111111

    abccddd6666666

    abccddd1111111

    abccddd1111111

    abccddd1111111

    [root@cloucentos6 home]# tail font.txt | cat -n

         1     abccddd1111111

         2     ddeeee22222222

         3     abccddd3333333

         4     abccddd5555555

         5     abccddd1111111

         6     abccddd1111111

         7     abccddd6666666

         8     abccddd1111111

         9     abccddd1111111

        10     abccddd1111111

    范例4tail –n 打印指定最后几行

    [root@cloucentos6 home]# wc -l font.txt

    54 font.txt

    [root@cloucentos6 home]# tail -n 5 font.txt | cat –n   #打印最后5行

         1     abccddd1111111

         2     abccddd6666666

         3     abccddd1111111

         4     abccddd1111111

         5     abccddd1111111

    [root@cloucentos6 home]# tail -n +50 font.txt | cat –n   #打印除前50行之外的所有行

         1     abccddd1111111

         2     abccddd6666666

         3     abccddd1111111

         4     abccddd1111111

         5     abccddd1111111

    范例5打印文件第2到第4行

    [root@cloucentos6 home]# cat font.txt

    1

    2

    3

    4

    5

    6

    [root@cloucentos6 home]# head -n 4 font.txt | tail -n +2

    2

    3

    4

    5.7df创建特定大小的文本

    范例:if代表输入的文件,of代表输出的文件,bs代表以字节为单位的块大小,conut代表需要被复制的块数。字节(1B)代码 c  字(2B)代码w  块(512B)代码b  千字节(1024B)代码k

    兆字节(1024KB)代码M 吉字节(1024MB)代码G

    [root@cloucentos6 home]# ls -l

    总用量 24

    -rw-r--r--. 1 root root    20  4月 25 23:46 file.txt

    drwx------. 2 root root 16384 12月 21 17:14 lost+found

    -rwxr-xr-x. 1 root root    98  4月 25 22:36 test.sh

    [root@cloucentos6 home]# cat file.txt

    1234

    6089

    5428

    0001

    1[root@cloucentos6 home]# dd if=/home/file.txt of=testfile.txt bs=1c count=7

    记录了7+0 的读入

    记录了7+0 的写出

    7字节(7 B)已复制,8.5021e-05 秒,82.3 kB/秒

    [root@cloucentos6 home]# ls -l

    总用量 28

    -rw-r--r--. 1 root root    20  4月 25 23:46 file.txt

    drwx------. 2 root root 16384 12月 21 17:14 lost+found

    -rw-r--r--. 1 root root     7  4月 26 01:49 testfile.txt

    -rwxr-xr-x. 1 root root    98  4月 25 22:36 test.sh

    [root@cloucentos6 home]# cat testfile.txt

    1234

    60[root@cloucentos6 home]#

  • 相关阅读:
    最全前端开发书籍整理推荐
    一个命令搞定MP4文件转m3u8文件
    Git基本使用方法
    How to write class diagram
    OpenSSL Installation On Windows
    单点登录(Single Sign On)解决方案
    利用 jQuery 克隆对象
    java中自定义一个异常类 在某些情况抛出自定的异常 ----------阻断程序
    Java 如何抛出异常、自定义异常
    flowable流程启动时监听器
  • 原文地址:https://www.cnblogs.com/zoulongbin/p/6890871.html
Copyright © 2020-2023  润新知