写给大忙人看的Linux文件处理命令

目录

    • 1、cut命令
    • 2、sort命令
    • 3、uniq命令
    • 4、wc命令

1、cut命令

  • 命令解释
      cut - remove sections from each line of files(数据剪切,即从文件的每行中移除一些部分)
  • 命令语法
      cut OPTION… [FILE]…
  • 命令选项
选 项 解 释
-b 以字节为单位进行分割
-c 以字符为单位进行分割
-d 自定义分隔符,默认为制表符
-f 与-d一起使用,指定显示哪个区域
-n 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除
  • 实例

  这里先给出一段浪漫的文本:


I LOVE YOU and I MISS YOU.
YOU LIKE ME but I DON’T MISS YOU.


  ① 提取每行第三个字节;

[root@localhost tmp]# cut -b 3 test
L
U

  ② 提取每行第十二个字符之后的内容(包括十二);

[root@localhost tmp]# cut -c 12- test
and I MISS YOU.
 but I DON'T MISS YOU.

  ③ 以字母"I"为分隔符,提取每行第一个"I"与第二个"I"之间的内容;

[root@localhost tmp]# cut -d "I" -f 2 test
 LOVE YOU and
KE ME but

2、sort命令

  • 命令解释
      sort - sort lines of text files(以ASCII 码的次序对文本文件的行进行排序)
  • 命令语法
      sort [OPTION]… [FILE]…
      sort [OPTION]… --files0-from=F
  • 命令选项
选 项 解 释
-f 忽略大小写
-b 忽略每行最前面的空格符部分
-M 以月份的名字来排序
-n 使用纯数字进行排序
-r 以相反的顺序排序
-u 即uniq,相同的数据只出现一行
-t 指定排序时所用的栏位分隔字符
-k 以指定区间来进行排序
-o 将结果写入到文件中
  • 实例

  同样还是先给出一段文本(第一个域是公司名称,第二个域是公司人数,第三个域是员工工资,全瞎编的别信哦):


google 110 5000
baidu 100 5000
guge 50 3000
sohu 100 4500


  ① 按照员工工资降序排序,如果相同,则按照公司人数升序排序;

[root@localhost tmp]# sort -t ' ' -k 3nr -k 2n test    //这里去掉-r和-n选项,而将它们加入到了每一个-k选项中了,作用是一样的!
baidu 100 5000
google 110 5000
sohu 100 4500
guge 50 3000

  ②按照公司名称的第二个字母进行排序,如果相同,则按照员工工资降序排序;

[root@localhost tmp]# sort -t ' ' -k 1.2,1.2 -k 3nr test    //这里我们使用1.2,1.2的形式对域设置了起始点和终止点。
baidu 100 5000
google 110 5000
sohu 100 4500
guge 50 3000

3、uniq命令

  • 命令解释
      uniq - report or omit repeated lines(报告或省略排序过文件的重复行)

tips:既是排序过,可想而知,要使uniq起作用,所有重复行必须是相邻的,因此uniq经常和sort合用。

  • 命令语法
      uniq [OPTION]… [INPUT [OUTPUT]]
  • 命令选项
选 项 解 释
-c 或 --count 在每行前面显示该行重复出现的次数
-d 或 --repeated 只显示重复行的一行
-D 显示所有重复行
-f 比较时忽略前N列
-i 忽略大小写区别
-s 比较时跳过前N个字符
-w 只比较N个字符的内容,默认从开始算起,如果和-s使用即从指定位置开始
-u 只显示唯一行
-z 末尾生成0个字节的终止符作为输出(\0),这样的目的就是避免一条记录行因为存在空格被识别为多行
  • 实例

  一段水果名称组合起来的文本:


Apple
apple
banana
cherry
cherry
peach core
pear core
apple


  ①跳过第一列字符,并在前面加上重复出现的次数;

[root@localhost tmp]# uniq -c -f1 test
      5 Apple
      1 peach    core
      1 pear     core
      1 apple

  ②跳过每行的第一个字符,且只比较两位;

[root@localhost tmp]# uniq -s1 -w2 test
Apple
banana
cherry
peach    core
apple

4、wc命令

  • 命令解释
      wc - print newline, word, and byte counts for each file(统计指定文件的打行数、字数和字节数并输出)
  • 命令语法
      wc [OPTION]… [FILE]…
      wc [OPTION]… --files0-from=F
  • 命令选项
选 项 解 释
-c 统计字节数
-l 统计行数
-m 统计字符数。不能与 -c 选项一起使用
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串
-L 打印最长行的长度
  • 实例

  浪漫文本来了:


Cold here, icy cold there.
You belong to neither, leaves have withered.
Your face is pale and blue, a tearful smile.
Something in your eyes, whispers words of last good-bye.
My heart sinks down, tears surge out.


  查询这段文本的字节数、行数、字数以及最长行的长度;

[root@localhost tmp]# wc -clwL test
  5  37 211  56 test

你可能感兴趣的:(Linux文本处理)