sort命令在Linux中主要用于对文件进行排序,并将排序结果输出。sort命令输入可以是指定的文件和数据流。本文主要介绍sort命令的基本语法和常见使用实例。
sort命令语法
sort命令格式:sort [选项] 文件名
选项:
-n:按数字排序 -t:指定分隔符。默认是空格或者tab键分隔 -b:使用域进行分类,忽略前面空格。 -r:逆向排序 -u:删除所有复制行 -o:后面跟文件名,存储sort输出结果。主要是可以实现原地置换。比如sort file.txt -o file.txt -c:判断文件是否已经分类 -m:合并两个分类文件
选项使用说明:
(1)-n选项,按照数字进行排序。默认情况下sort命令是以ASCII值进行排序。下面查看sort不带参数n和带参数n的执行情况。
$ echo -e "123\n26\n3" |sort 123 26 3 $ echo -e "123\n26\n3" |sort -n 3 26 123
(2)-r选项,以降序排序输出。默认情况下是以升序输出。
$ echo -e "123\n26\n3" |sort -nr 123 26 3
(3)-u选项,去掉重复行,相当于uniq命令。
$ echo -e "123\n26\n26\n3\n123" |sort -u 123 26 3
(4)-c选项,判断文件是否已经分类,如果已分类,不输出内容。如果未分类,提示无序。
$ echo -e "12\n36\n45" |sort -nc $ echo -e "12\n36\n5" |sort -nc sort:-:3:无序: 5
说明:例子中带参数-n表示以整数排序是否有序。
(5)-t选项,指定分隔符。默认情况下sort命令是以空格或者多个空格做为分隔符。
$ echo -e "Java:12\nPython:3\nRuby:21" | sort -t ':' -nrk2 Ruby:21 Java:12 Python:3
(6)-o选项。后面跟文件名,保存sort输出结果。主要是可以实现原地置换。
$sort -t':' -nrk3 file.txt -o file.xt
典型实例
(1)文件中行分隔符为冒号":",要求先按第三列数字大小排序,再按照第一列数字大小排序,结果以降序输出
$ echo -e "1:Python:15\n2:Python:5\n3:Ruby:25\n4:Python:15" | sort -t':' -k3 -k1 -nr 3:Ruby:25 4:Python:15 1:Python:15 2:Python:5