linux sort用法介绍

sort是Linux命令,主要用于排序文件、对已排序的文件进行合并,并检查文件以确定它们是否已排序。

语法

sort [ -A ] [ -b ] [ -c ] [ -d ] [ -f ] [ -i ] [ -m] [ -n ] [ -r ] [ -u ] [ -o OutFile ] [ -t Character ] [ -T Directory ] [ -y [ Kilobytes ] ] [ -z RecordSize ] [ [ + [ FSkip ] [ .CSkip ] [ b ] [ d ] [ f ] [ i ] [ n ] [ r ] ] [ - [ FSkip ] [ .CSkip ] [ b ] [ d ] [ f ] [ i ] [ n ] [ r ] ] ] ... [ -k KeyDefinition ] ... [ File ... ]

描述

sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。-(减号)代替文件名指定标准输入。如果您不指定任何文件名,那么该命令对标准输入排序。可以使用 -o 标志指定输出文件。
如果不指定任何标志,sort 命令基于当前语言环境的整理顺序对输入文件的所有行排序。
实例:

对当前文件夹文件排序(默认):

bash-4.1$ ls -l | sort
drwxr-xr-x. 2 root root 4096 Nov  9 12:33 conf
-rw-r--r--. 1 root root 1498 Nov  9 12:33 dubbo-consumer.xml
-rw-r--r--. 1 root root 2146 Nov  9 12:33 task-config.xml
-rw-r--r--. 1 root root 3008 Nov  9 12:33 logback.xml
-rw-r--r--. 1 root root  467 Nov  9 12:33 task.properties
-rw-r--r--. 1 root root  567 Nov  9 12:33 root-bean.xml

输入当前文件夹中的文件大小并从小到大排序:

-bash-4.1$ ls -l | awk '{print $5}' | sort -n

467
567
1498
2146
3008
4096


按当前文件夹中的文件从小到大列排序,并输出每行完整信息:

-bash-4.1$ ls -l | sort  -n -k5
total 24
-rw-r--r--. 1 root root  467 Nov  9 12:33 task.properties
-rw-r--r--. 1 root root  567 Nov  9 12:33 root-bean.xml
-rw-r--r--. 1 root root 1498 Nov  9 12:33 dubbo-consumer.xml
-rw-r--r--. 1 root root 2146 Nov  9 12:33 task-config.xml
-rw-r--r--. 1 root root 3008 Nov  9 12:33 logback.xml
drwxr-xr-x. 2 root root 4096 Nov  9 12:33 conf

按第二列从小到大排序,不显示重复的值:

-bash-4.1$ ls -l | awk '{print $2}' | sort -n -u
1
2
24


将上面实例按降序排列:

-bash-4.1$ ls -l | awk '{print $2}' | sort -r -u
24
2
1


-o 参数:将排序好的结果写回到原文件:

[rocrocket@rocrocket programming]$ sort -r sample.txt -o sample
[rocrocket@rocrocket programming]$ cat sample.txt
5
4
3
2
1


-t 参数:指定列之间的分隔符,一般和 -K 连用,使用指定列排序:

[rocrocket@rocrocket programming]$ sort -n -k 2 -t ‘:’ sample.txt
10:2.5
20:3.4
30:4.5
90:5.3

其他的sort常用选项

-f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写

-c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1

-C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1

-M会以月份来排序,比如JAN小于FEB等等

-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。



你可能感兴趣的:(linux,linux,软件测试,sort,sort,实例)