linux排序命令sort

sort是接受数据并排序,这些数据可以是文件数据,命令输出数据,控制台数据等。这个命令在linux系统中常被使用。

命令有很多参数,实现按数字排序,按照字母排序,逆排序,指定列排序,指定分隔符等。

最好的学习方法当然是通过列子来加深认识。

下面的命令是安装ll命令输出的第5列排序,第五列是文件的大小,-n是按照数字,-k 5就是指明是第5列。我们可以看到最小的文件只有6,而最大的文件是
21523536 。

# ll | sort -n -k 5
total 21044
drwxr-xr-x. 2 root root 6 Sep 26 2016 Desktop
drwxr-xr-x. 2 root root 6 Sep 26 2016 Documents
drwxr-xr-x. 2 root root 6 Sep 26 2016 Downloads
drwxr-xr-x. 2 root root 6 Sep 26 2016 Music
drwxr-xr-x. 2 root root 6 Sep 26 2016 Pictures
drwxr-xr-x. 2 root root 6 Sep 26 2016 Public
drwxr-xr-x. 2 root root 6 Sep 26 2016 Templates
drwxr-xr-x. 2 root root 6 Sep 26 2016 Videos
drwxrwxrwx 3 eyeglasses eyeglasses 25 Jul 31 14:02 gaojing
drwxr-xr-x 5 root root 79 Jul 9 16:18 guanliansuanfa
-rw-r–r– 1 root root 81 Jan 12 2010 index.html
-rw-r–r– 1 root root 115 Sep 4 10:01 food
-rw——-. 1 root root 1310 Sep 26 2016 anaconda-ks.cfg
-rw——-. 1 root root 1358 Sep 26 2016 initial-setup-ks.cfg
drwxrwxrwx 2 root root 4096 Jul 30 11:28 scalaprogram
drwxrwxrwx 2 root root 4096 Jul 31 13:59 form
-rw-r–r– 1 root root 21523536 Aug 5 09:05 sichuanguanlian-assembly-0.1.jar


再来一个,如果没有加-n,默认是安装字母顺序来排序,我这里加一个-r,就是逆序。 文件Videos在第一行,a开头的在最后,原文件的顺序在上面。

# ll | sort -k9 -r
drwxr-xr-x. 2 root root 6 Sep 26 2016 Videos
drwxr-xr-x. 2 root root 6 Sep 26 2016 Templates
-rw-r–r– 1 root root 21523536 Aug 5 09:05 sichuanguanlian-assembly-0.1.jar
drwxrwxrwx 2 root root 4096 Jul 30 11:28 scalaprogram
drwxr-xr-x. 2 root root 6 Sep 26 2016 Public
drwxr-xr-x. 2 root root 6 Sep 26 2016 Pictures
drwxr-xr-x. 2 root root 6 Sep 26 2016 Music
-rw——-. 1 root root 1358 Sep 26 2016 initial-setup-ks.cfg
-rw-r–r– 1 root root 81 Jan 12 2010 index.html
drwxr-xr-x 5 root root 79 Jul 9 16:18 guanliansuanfa
drwxrwxrwx 3 eyeglasses eyeglasses 25 Jul 31 14:02 gaojing
drwxrwxrwx 2 root root 4096 Jul 31 13:59 form
-rw-r–r– 1 root root 115 Sep 4 10:01 food
drwxr-xr-x. 2 root root 6 Sep 26 2016 Downloads
drwxr-xr-x. 2 root root 6 Sep 26 2016 Documents
drwxr-xr-x. 2 root root 6 Sep 26 2016 Desktop
-rw——-. 1 root root 1310 Sep 26 2016 anaconda-ks.cfg

还有一个-t参数,非常有用,用于按照分隔符来排序,比如-t ” “,按照空格,-t “-“,按照连接符来分隔,还可以结合-k参数。下面的例子有-r参数和无-r参数的对比。很明显,我们是用-t “-“指定分隔符,-k2表示在分隔符的第二个列。

# sort -t”-” -k2 food -r
Isle of Java-zz
Tio Pepe’s-xx Peppers
Mandalay race-qq
Sushi and-mm Sashimi
Sweet Tooth-kk
Big Apple Deli-ee
Bangkok Wok-bb
Afghani Cuisine-aa

# sort -t”-” -k2 food

Afghani Cuisine-aa
Bangkok Wok-bb
Big Apple Deli-ee
Sweet Tooth-kk
Sushi and-mm Sashimi
Mandalay race-qq
Tio Pepe’s-xx Peppers
Isle of Java-zz


发表评论

电子邮件地址不会被公开。 必填项已用*标注