文本处理工具—2

  之前已将写了5种文本处理工具,接着再写4种,有兴趣的可以先看一下之前的博客

   文本处理工具-2_Linux文本处理工具—1文本处理工具-2_Linux


目 

6、paste

7wc

8sort

9cut

练习



6paste

1paste file1 file2 [file3]  可以合并多个文件,文件之间用空格隔开

想到把两个文件合并显示,我们可能会想到复制再追加

cat f1>>f2  f2就是将原先的f2f1 合并

但是原本的f2就丢失了,当然我们可以先把f2备份,但是太麻烦了

paste f1 f2    可以合并多个文件显示,但原先的文件并不会合并,我们测试一下

文本处理工具-2_Linux_03

可以是将两个文件行数一样的显示在了一行,但不会改变原文件

2paste -s f2 将文件内容变成一行显示

文本处理工具-2_Linux_04

f2 文件内容变成一行显示,用之前的tr '\n' '\t'也可以实现也可以用

文本处理工具-2_Linux_05

至于这里为什么将是将换行符\n转换成TAB \t

是因为,paste是默认将两个文件合并在一起用TAB符间隔,我们也可以指定其他的符号

3paste –df1 f2  指定合并后的分隔符

文本处理工具-2_Linux_06

当然还可以用% 等隔开,可以在自己的虚拟机上试试

7wc

  这里的wc可不是那个wc 而是 word count

1wc -m 字符数

文本处理工具-2_Linux_07

因为每行后的换行符也占用了一个字符

那么把换行符去掉呢

echo -e  "abcd\c"|wc-m

文本处理工具-2_Linux_08

去掉换行符便是4个字符

2-c 字节

echo abcd|wc -c

文本处理工具-2_Linux_09

  也是5个字符,那么字节和字符有什么不同呢,我们举个汉字例子试试吧

 

文本处理工具-2_Linux_10

可以看出,去除换行符的占位,一个汉字是一个字符,确是占三个字节,这里的汉字所占字节在不同编码中也不同。可以查看下面的链接

字符与字节的不同

3wc – w 单词数

文本处理工具-2_Linux_11

4wc –l 显示行数

文本处理工具-2_Linux_12

5)单独的wc显示以下信息

wc 行数 单词数 字节

   -l  -w   -c

文本处理工具-2_Linux_13

8、cut

1cut 剪切的意思

-d 指定分隔符 (默认TAB

-f 选取第几列

      n     n

      n-r    n列到第r

      nm-r  n列;第m列到第r

   只说概念大家也不明白,我们举例子说明

我只想取出/etc/paswd中的用户名,即文件的第一列该怎样取出呢,用到上面的两个选项。

文本处理工具-2_Linux_14

我们可以看到各个信息之间用:隔开,我们想要的信息在第一列,你是否想到了什么

是的,cat/etc/passwd|cut -d: -f1

文本处理工具-2_Linux_15

当然我想选前两行呢

文本处理工具-2_Linux_16

2-c 按字符截取

n      n

n-r      n列到第r

nm-r     n列;第m列到第r

文本处理工具-2_Linux_17

3--output-delimiter  指定输出符

通过之前的截取可以看出文件中各列以什么字符隔开,就显示什么字符,而--output-delimiter  可以指定输出符

cut -d: -f1,3 --output-delimiter='|' /etc/passwd

文本处理工具-2_Linux_18

9、sort

1sort 顾名思义就是整理分类的意思

文本处理工具-2_Linux_19

2-r 执行反方向(由上至下)整理 ,与sort恰恰相反

 文本处理工具-2_Linux_20

3-n 执行按数字大小整理,从大到小排列

 文本处理工具-2_Linux_21

我们也可以组合用cat a.txt|sort -nr

文本处理工具-2_Linux_22

  4sort -u 选项(独特,unique)删除输出中的重复行

 文本处理工具-2_Linux_23

 5-t c 选项使用c做为字段界定符   -t:   -t% 

       -kX 选项按照使用c字符分隔的X列来整理

 这两个选项经常一块使用

  例如:/etc/passwd 按照第3列从大到小排列

 文本处理工具-2_Linux_24

练习

 结合以上所有文本处理工具做几道练习题

1.找出分区利用率最大的值

                 df|tr -s ‘  ‘%|cut -d% -f5|sort -t% -k1-nr|head -n 1

文本处理工具-2_Linux_25

2.查出用户UID最大值的用户名、UIDshell类型

   cat /etc/passwd|cut -d: -f1,3,7|sort -t:-k2 -nr|head -n 1

文本处理工具-2_Linux_26


还是那句话,知识是探索的,各个命令,工具相结合才能发挥大作用文本处理工具-2_Linux_27