Linux文本处理之sort,uniq

本文详细介绍了Linux下sort和uniq命令的使用方法,包括按不同条件排序、去重及统计重复行等功能,适用于数据处理和文本分析场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备文本:test.txt

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

一、sort

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

 cat test.txt

  

 sort test.txt

  

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

  

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

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

  可以看到将学号按照ASCII码降序排列了

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

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

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

more num.txt

  

sort num.txt

  

sort -n num.txt

  

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

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

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

  

7. 

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

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

8.

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

将test.txt按照第6列英语成绩降序排列,英语成绩相同时,按照第四列语文成绩升序排列。结果如下:

9.

 sort -t ' ' -k 1.2 test.txt

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

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

10. 

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

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

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

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

对test.txt的先按第4列升序排列,再按第7列升序排列,最后再对结果进行去重。

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

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

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

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

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

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

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值