1、sort的工作原理
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
# cat file.txt
banana
apple
pear
orange
pear
2、sort的-u选项:输出行中去除重复行
# sort -u file.txt
apple
banana
orange
pear
3、sort的-r选项:降序
# sort -r file.txt
pear
orange
banana
apple
4、sort的-o选项:重定向文件
# sort -r file.txt -o sorted.txt
5、sort的-n选项:已数字来进行排序
# cat number.txt
5
1
10
12
4
3
# sort -n number.txt
1
3
4
5
10
12
6、sort的-t选项和-k选项
# cat fruit.txt
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
上述文件有三列,列与列之间用冒号隔开了。第一列表示水果类型、第二列表示水果数量、第三列表示水果价格。
那么我想以水果数量来排序,也就是以第二列来排序,如何利用sort实现?
sort提供了-t选项,后面可以设定间隔符。(是不是想起了cut和paste的-d选项,共鸣~~)
指定了间隔符之后,就可以用-k来指定列数了。
# sort -n -k 2 -t : fruit.txt
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3
在使用-k选项的时候需要注意的事情:
# sort -n -k 2 -k 3 -t : fruit.txt
-k可以使用过个,上列命令其意思是,当以第二列排序时,遇到相同的话,就已第三列继续排序,默认的是已第一列。apple:10:2.5 orange:20:3.4 banana:30:5.5 pear:90:2.3
由于只对第二个字母进行排序,所以我们使用了-k1.2,1.2的表示方式,表示我们“只”对第二个字母进行排序。(如果你问“我使用-k1.2怎么不行?”,当然不行,因为你省略了End部分,这就意味着你将对从第二个字母起到本域最后一个字符为止的字符串进行排序)。# sort -k 1.2,1.2 -t : fruit.txt banana:30:5.5 pear:90:2.3 apple:10:2.5 orange:20:3.4
7、sort的-f选项:忽略大小写
该命令很简单就不此描述了。