sort命令详解

   最近在学习shell脚本编程时,看到一些脚本语句当中有许多使用sort命令的语句,上网搜索了一些资料,现在总结一下:

sort   命令的意思很明显就是为了排序,通常我们使用sort排序的基本参数如下:

1  简单的排序

root@jiangjian-K42JZ:/home/jiangjian/sh# cat facebook.txt
guge 50 3000
baidu 100 5000
sohu 100 4500
google 110 5000
root@jiangjian-K42JZ:/home/jiangjian/sh# sort facebook.txt
baidu 100 5000
google 110 5000
guge 50 3000
sohu 100 4500
root@jiangjian-K42JZ:/home/jiangjian/sh#

这里是按照字符为序进行排列的,这也是sort默认的工作方式,你可以改变


2  对数字进行排序 ------使用参数-n

root@jiangjian-K42JZ:/home/jiangjian/sh# cat data
32
24
3
114
11
31
41
root@jiangjian-K42JZ:/home/jiangjian/sh# sort -n data
3
11
24
31
32
41
114
提示:如果你没有指定以数字大小来排序,则结果如下:

root@jiangjian-K42JZ:/home/jiangjian/sh# cat data
32
24
3
114
11
31
41
root@jiangjian-K42JZ:/home/jiangjian/sh# sort data
11
114
24
3
31
32
41
root@jiangjian-K42JZ:/home/jiangjian/sh#
因为sort它还是按照字符来排序的,所以在这里114会小于24


3 去掉冗余行  (使用 -u 参数)

root@jiangjian-K42JZ:/home/jiangjian/sh# cat data
11
32
24
3
114
11
31
41
root@jiangjian-K42JZ:/home/jiangjian/sh# sort -n -u data
3
11
24
31
32
41
114


4 制定特定段进行比较 (使用-k 参数)

详解: - k   n  其中n表示的是该行当中的第n的段 ,其中使用  -t   '  '  可以指定每行内的段分隔符,下面例子就是用的是空格键。

root@jiangjian-K42JZ:/home/jiangjian/sh# cat data
bob  2  178
Jim  1  179
Tom  3  178
root@jiangjian-K42JZ:/home/jiangjian/sh# sort -n -t ' ' -k 2 data         //对第二个段进行排序
Jim  1  179
bob  2  178
Tom  3  178
root@jiangjian-K42JZ:/home/jiangjian/sh# 



5 将排序的结果重定向到文件当中 (使用 -o 参数)

正常情况下sort的排序结果都是输出的屏幕上面,也即stdout,可以使用输出重定向到文件当中(>>),但是如果使用这种方式到自己的原文件当中,就存在问题;

root@jiangjian-K42JZ:/home/jiangjian/sh# cat data
bob  2  178
Jim  1  179
Tom  3  178
root@jiangjian-K42JZ:/home/jiangjian/sh# sort -n -t ' ' -k 2 data >data
root@jiangjian-K42JZ:/home/jiangjian/sh# cat data
root@jiangjian-K42JZ:/home/jiangjian/sh#
可以发现data文件当中的内容都不见了。现在使用-o 参数查看结果:

root@jiangjian-K42JZ:/home/jiangjian/sh# cat data
bob  2  178
Jim  1  179
Tom  3  178
root@jiangjian-K42JZ:/home/jiangjian/sh# sort -n -t ' ' -k 2 data -o data
root@jiangjian-K42JZ:/home/jiangjian/sh# cat data
Jim  1  179
bob  2  178
Tom  3  178




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值