文本处理之 sort

本文主要介绍一下 linux 下 sort 命令的简单用法

下面通过一个例子说明一下 sort 命令的最常用的用法。

在 /root 下 ll 命令:

$ ll
total 44
drwx------  7 root root 4096 Oct 23 11:46 ./
drwxr-xr-x 25 root root 4096 Apr 13  2015 ../
-rw-------  1 root root  317 Aug  5 13:30 .bash_history
-rw-r--r--  1 root root 3106 Apr 19  2012 .bashrc
drwx------  3 root root 4096 Jul  1 00:18 .cache/
drwx------  4 root root 4096 Jul  1 00:40 .config/
drwx------  3 root root 4096 Oct 23 11:46 .dbus/
-rw-r--r--  1 root root  140 Apr 19  2012 .profile
drwx------  2 root root 4096 Oct 23 08:36 .pulse/
-rw-------  1 root root  256 Apr 13  2015 .pulse-cookie
drwx------  2 root root 4096 Jul 18 15:00 .ssh/

首先需要先筛选出文件,而不是文件夹,区别在于第一个符号是 - 而不是 d
所以可以先用 grep 命令进行筛选:

$ ll | grep -e ^'-'
-rw-------  1 root root  317 Aug  5 13:30 .bash_history
-rw-r--r--  1 root root 3106 Apr 19  2012 .bashrc
-rw-r--r--  1 root root  140 Apr 19  2012 .profile
-rw-------  1 root root  256 Apr 13  2015 .pulse-cookie

其中 -e 后面跟一个正则表达式, ^'-' 指的就是以'-' 开头的所有行。

接下来,如果想对这些文件的大小进行排序:

$ ll | grep -e ^'-' | sort -n -k 5
-rw-r--r--  1 root root  140 Apr 19  2012 .profile
-rw-------  1 root root  256 Apr 13  2015 .pulse-cookie
-rw-------  1 root root  317 Aug  5 13:30 .bash_history
-rw-r--r--  1 root root 3106 Apr 19  2012 .bashrc

其中, -n 说明按数值进行排序, -k 5 可以简单理解为对每一行的第五列进行排序,这一列代表了文件的大小。

如果想从大到小排序,只需加上 -r 选项即可:

$ ll | grep -e ^'-' | sort -n -R -k 5
-rw-r--r--  1 root root 3106 Apr 19  2012 .bashrc
-rw-------  1 root root  317 Aug  5 13:30 .bash_history
-rw-------  1 root root  256 Apr 13  2015 .pulse-cookie
-rw-r--r--  1 root root  140 Apr 19  2012 .profile

接下来,如果想对文件名进行排序,默认就是按字母类型排序的:

$ ll | grep -e ^'-' | sort -k 9
-rw-------  1 root root  317 Aug  5 13:30 .bash_history
-rw-r--r--  1 root root 3106 Apr 19  2012 .bashrc
-rw-r--r--  1 root root  140 Apr 19  2012 .profile
-rw-------  1 root root  256 Apr 13  2015 .pulse-cookie

当然也可以对第6行中的月份进行排序:

$ ll | grep -e ^'-' | sort -M -k 6
-rw-------  1 root root  256 Apr 13  2015 .pulse-cookie
-rw-r--r--  1 root root  140 Apr 19  2012 .profile
-rw-r--r--  1 root root 3106 Apr 19  2012 .bashrc
-rw-------  1 root root  317 Aug  5 13:30 .bash_history

posted on 2015-10-23 19:44  OA_maque  阅读(169)  评论(0)    收藏  举报

导航