linux按照学号对文件进行排序,Linux文本处理之sort,uniq

准备文本:test.txt

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

一、sort

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

cat test.txt

1db6954164a8c9356b81507e046f0358.png

sort test.txt

c25cbf88dca62cff2293144ae230c899.png

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

36ba795dd0e8a8e0abc9ebd896d12ff4.png

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

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

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

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

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

50a96b52980aee561057f75c33655306.png

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

more num.txt

55a556189174e8a846220733b18d23be.png

sort num.txt

907d4457514438d39c0473d7114fb033.png

sort -n num.txt

53d39a689c8a7132ed96d27a1503dea6.png

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

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

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

bd13b7a6bf9e7b77d65b8da9f61955a5.png

7.

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

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

031c56a0951823d4bf457dc5d2eb40a1.png

8.

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

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

9.

sort -t ' ' -k 1.2 test.txt

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

5f4bb919096b0c69e53d0d8f1b9e7674.png

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

10.

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

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

e75724e5f80c64ff77813c9cfe64f804.png

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

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

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

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

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

8e639c7b288f7d70118964050985f3ec.png

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

c2057aa4f6ba07c4ec7e871925b95b93.png

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

5eed0ce84c2d8a12d26b59015fe3ab9c.png

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

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

4209d90caa120da3f9864c32762e68d8.png

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

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

9f1e385cfc0f37b79d2fd8056a36c349.png

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值