sort除了能够按整行排序之外,还能按照指定列来排序(使用sort -k)。如果能与其他命令组合使用,威力无穷。
列如我们想查看linux所有进程那些占用的内存(RSS)最大,首先用ps列出所有进程。然后与sort组合就轻松达到目的。
'ps'执行结果
bash-3.00$ ps -a -o comm,vsz,rss,pmem |head -10
COMMAND VSZ RSS %MEM
vncconfig 16760 668 0.0
consolehelper-g 99180 1388 0.0
userhelper 68996 608 0.0
wireshark 1668384 3828 0.0
telnet 6172 540 0.0
telnet 6172 492 0.0
telnet 6172 492 0.0
ssh 17956 1860 0.0
vim 68504 532 0.0
'ps'按照RSS逆序执行结果
bash-3.00$ ps -a -o comm,vsz,rss,pmem |sort -nr -k 3 |head -10
java 2311924 1203476 14.7
java 2282980 195204 2.3
java_vm 247016 63644 0.7
firefox-bin 109496 33880 0.4
vim 81008 14168 0.1
Pigs7 3836788 12700 0.1
Pigs7 3837024 12464 0.1
Pigs7.exe 3836664 12164 0.1
wireshark 1668384 3828 0.0
vim 68804 3000 0.0
文件按照大小排序前:
bash-3.00$ ls -tlr pt_4.0.2011*
-rw-r--r-- 1 canhuali bicbj 20774 Aug 10 17:30 pt_4.0.2011.8.10.tar.gz
-rw-r--r-- 1 canhuali bicbj 24095 Aug 31 15:36 pt_4.0.2011.08.31.tar.gz
-rw-r--r-- 1 canhuali bicbj 24394 Sep 1 15:07 pt_4.0.2011.09.01.tar.gz
-rw-r--r-- 1 canhuali bicbj 24469 Sep 7 09:20 pt_4.0.2011.09.07.tar.gz
-rw-r--r-- 1 canhuali bicbj 24487 Sep 22 17:46 pt_4.0.2011.09.22.tar.gz
-rw-r--r-- 1 canhuali bicbj 24520 Sep 30 10:24 pt_4.0.2011.09.30.tar.gz
-rw-r--r-- 1 canhuali bicbj 24545 Oct 8 16:28 pt_4.0.2011.10.08.tar.gz
-rw-r--r-- 1 canhuali bicbj 24615 Nov 4 17:10 pt_4.0.2011.11.04.tar.gz
排序后:
bash-3.00$ ls -tlr pt_4.0.2011* |sort -nr -k 5
-rw-r--r-- 1 canhuali bicbj 24615 Nov 4 17:10 pt_4.0.2011.11.04.tar.gz
-rw-r--r-- 1 canhuali bicbj 24545 Oct 8 16:28 pt_4.0.2011.10.08.tar.gz
-rw-r--r-- 1 canhuali bicbj 24520 Sep 30 10:24 pt_4.0.2011.09.30.tar.gz
-rw-r--r-- 1 canhuali bicbj 24487 Sep 22 17:46 pt_4.0.2011.09.22.tar.gz
-rw-r--r-- 1 canhuali bicbj 24469 Sep 7 09:20 pt_4.0.2011.09.07.tar.gz
-rw-r--r-- 1 canhuali bicbj 24394 Sep 1 15:07 pt_4.0.2011.09.01.tar.gz
-rw-r--r-- 1 canhuali bicbj 24095 Aug 31 15:36 pt_4.0.2011.08.31.tar.gz
-rw-r--r-- 1 canhuali bicbj 20774 Aug 10 17:30 pt_4.0.2011.8.10.tar.gz