Linux文本处理之sort,uniq

准备文本:test.txt

按列分别是学号 姓名 年龄 语文 数学 英语成绩

一、sort

1. sort默认:以行为单位对文件进行排序,按ASCII码值进行比较升序输出。

 cat test.txt

  Linux文本处理之sort,uniq_第1张图片

 sort test.txt

  Linux文本处理之sort,uniq_第2张图片

2. sort -u test.txt 对test.txt按默认规则进行排序后去除重复行

  Linux文本处理之sort,uniq_第3张图片

可以看出重复行“李明”对应的这一行被删除了。

3. sort -r test.txt 对test.txt按默认规则进行降序排序

  Linux文本处理之sort,uniq_第4张图片可以看到将学号按照ASCII码降序排列了

4. sort -r test.txt -o test.txt

将排序结果直接用重定向的方式(>src.file)输出到原文件时原文件会被清空,因此为了将排序后的文件输出到原来文件中存储,使用-o选项即可。

Linux文本处理之sort,uniq_第5张图片

5. sort -n num.txt 以数值的方式对文件进行排序

more num.txt

  Linux文本处理之sort,uniq_第6张图片

sort num.txt

  Linux文本处理之sort,uniq_第7张图片

sort -n num.txt

  Linux文本处理之sort,uniq_第8张图片

6. sort -t -k 用-t设置分隔符,-k指定列数

sort -n -k 3 -t ' ' test.txt

对test.txt以空格为分隔符,将第三列(年龄)按数值升序排序

  Linux文本处理之sort,uniq_第9张图片

7. 

sort -n -t ' ' -k 3 -k 4 test.txt

对test.txt安装第三列年龄升序排列,年龄相同时,按照第四列语文成绩升序排列

Linux文本处理之sort,uniq_第10张图片

8.

 sort -n -t ' ' -k 6r -k 4 test.txt

将test.txt按照第6列英语成绩降序排列,英语成绩相同时,按照第四列语文成绩升序排列。结果如下:Linux文本处理之sort,uniq_第11张图片

9.

 sort -t ' ' -k 1.2 test.txt

对test.txt的第一列的第二个字符按照默认规则进行排序

Linux文本处理之sort,uniq_第12张图片

可以看到第一列的字段均按照第二个字符做了升序排序。

10. 

sort -t ' ' -k 1.2,1.2 -k 7,7nr test.txt

对test.txt的第一个字段的第二个字符按默认规则排序,若该字符相同,则对第7列按照数值进行降序排列。

Linux文本处理之sort,uniq_第13张图片

11. sort -n -k -u联合使用

sort -n -k 4 -k 7 -u test.txt

对test.txt的先按第4列升序排列,再按第7列升序排列,最后再对结果进行去重。Linux文本处理之sort,uniq_第14张图片

二、uniq 输出或忽略文本中的重复行

1. uniq test.txt 去除test.txt中连续的重复行

Linux文本处理之sort,uniq_第15张图片

2. uniq -u test.txt 去除test.txt的重复,保留唯一的行

Linux文本处理之sort,uniq_第16张图片

3. uniq -c test.txt 去除test.txt中连续的重复行并记录出现的次数

Linux文本处理之sort,uniq_第17张图片

4.  sort -n num.txt |uniq -c

对num.txt按数值进行排序,去重后统计各个数出现的次数

Linux文本处理之sort,uniq_第18张图片

5.  uniq -d num.txt 只显示num.txt中连续的重复行

6. 先sort再uniq可以去除所有重复项

Linux文本处理之sort,uniq_第19张图片

 

你可能感兴趣的:(Linux文本处理之sort,uniq)