sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式:
sort [-bcfMnrtk][源文件][-o 输出文件]
补充说明:sort可针对文本文件的内容,以行为单位来排序。
参 数:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-f 排序时,忽略大小写字母。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
-k 选择以哪个区间进行排序。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
下面通过几个例子来讲述Sort的使用。
(1)sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
[rocrocket@rocrocket programming]$ cat seq.txt banana apple pear orange [rocrocket@rocrocket programming]$ sort seq.txt apple banana orange pear
用户可以保存排序后的文件内容,或把排序后的文件内容输出至打印机。下例中用户把排序后的文件内容保存到名为result的文件中。
$ sort seq.txt > result
(2)sort的-u选项
它的作用很简单,就是在输出行中去除重复行。
[rocrocket@rocrocket programming]$ cat seq.txt banana apple pear orange pear [rocrocket@rocrocket programming]$ sort seq.txt apple banana orange pear pear [rocrocket@rocrocket programming]$ sort -u seq.txt apple banana orange pear
pear由于重复被-u选项无情的删除了。
(3)sort的-r选项
sort默认的排序方式是升序,如果想改成降序,就加个-r就搞定了。
[rocrocket@rocrocket programming]$ cat number.txt 1 3 5 2 4 [rocrocket@rocrocket programming]$ sort number.txt 1 2 3 4 5 [rocrocket@rocrocket programming]$ sort -r number.txt 5 4 3 2 1
(5)sort的-o选项
由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。
但是,如果你想把排序结果输出到原文件中,用重定向可就不行了。
[rocrocket@rocrocket programming]$ sort -r number.txt > number.txt [rocrocket@rocrocket programming]$ cat number.txt [rocrocket@rocrocket programming]$
看,竟然将number清空了。
就在这个时候,-o选项出现了,它成功的解决了这个问题,让你放心的将结果写入原文件。这或许也是-o比重定向的唯一优势所在。
[rocrocket@rocrocket programming]$ cat number.txt 1 3 5 2 4 [rocrocket@rocrocket programming]$ sort -r number.txt -o number.txt [rocrocket@rocrocket programming]$ cat number.txt 5 4 3 2 1
(6) sort的-n选项
你有没有遇到过10比2小的情况。我反正遇到过。出现这种情况是由于排序程序将这些数字按字符来排序了,排序程序会先比较1和2,显然1小,所以就将10放在2前面喽。这也是sort的一贯作风。
我们如果想改变这种现状,就要使用-n选项,来告诉sort,“要以数值来排序”!
[rocrocket@rocrocket programming]$ cat number.txt 1 10 19 11 2 5 [rocrocket@rocrocket programming]$ sort number.txt 1 10 11 19 2 5 [rocrocket@rocrocket programming]$ sort -n number.txt 1 2 5 10 11 19
(7) sort的-t选项和-k选项
如果有一个文件的内容是这样:
[rocrocket@rocrocket programming]$ cat facebook.txt banana:30:5.5 apple:10:2.5 pear:90:2.3 orange:20:3.4
这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。那么我想以水果数量来排序,也就是以第二 列来排序,如何利用sort实现?幸好,sort提供了-t选项,后面可以设定间隔符。指定了间隔符之后,就可以用-k来指定列数了。
[rocrocket@rocrocket programming]$ sort -n -k 2 -t ‘:’ facebook.txt apple:10:2.5 orange:20:3.4 banana:30:5.5 pear:90:2.3
(8) 其他的sort常用选项
-f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写
-c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1
-C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1
-M会以月份来排序,比如JAN小于FEB等等
-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。
来源:http://www.cnblogs.com/dong008259/archive/2011/12/08/2281214.html
用法:sort [选项]... [文件]... 或:sort [选项]... --files0-from=F 串联排序所有指定文件并将结果写到标准输出。 长选项必须使用的参数对于短选项时也是必需使用的。 排序选项: -b, --ignore-leading-blanks 忽略前导的空白区域 -d, --dictionary-order 只考虑空白区域和字母字符 -f, --ignore-case 忽略字母大小写 -g, --general-numeric-sort 按照常规数值排序 -i, --ignore-nonprinting 只排序可打印字符 -M, --month-sort 比较 (未知) < "一月" < ... < "十二月" 在LC_ALL=C 时为(unknown) < `JAN' < ... < `DEC' -h, --human-numeric-sort 使用易读性数字(例如: 2K 1G) -n, --numeric-sort 根据字符串数值比较 -R, --random-sort 根据随机hash 排序 --random-source=文件 从指定文件中获得随机字节 -r, --reverse 逆序输出排序结果 --sort=WORD 按照WORD 指定的格式排序: 一般数字-g,高可读性-h,月份-M,数字-n, 随机-R,版本-V -V, --version-sort 在文本内进行自然版本排序 其他选项: --batch-size=NMERGE 一次最多合并NMERGE 个输入;如果输入更多 则使用临时文件 -c, --check, --check=diagnose-first 检查输入是否已排序,若已有序则不进行操作 -C, --check=quiet, --check=silent 类似-c,但不报告第一个无序行 --compress-program=程序 使用指定程序压缩临时文件;使用该程序 的-d 参数解压缩文件 --debug 为用于排序的行添加注释,并将有可能有问题的 用法输出到标准错误输出 --files0-from=文件 从指定文件读取以NUL 终止的名称,如果该文件被 指定为"-"则从标准输入读文件名 -k, --key=位置1[,位置2] 在位置1 开始一个key,在位置2 终止(默认为行尾) 参看POS 语法。 -m, --merge 合并已排序的文件,不再进行排序 -o, --output=文件 将结果写入到文件而非标准输出 -s, --stable 禁用last-resort 比较以稳定比较算法 -S, --buffer-size=大小 指定主内存缓存大小 -t, --field-separator=分隔符 使用指定的分隔符代替非空格到空格的转换 -T, --temporary-directory=目录 使用指定目录而非$TMPDIR 或/tmp 作为 临时目录,可用多个选项指定多个目录 --parallel=N 将同时运行的排序数改变为N -u, --unique 配合-c,严格校验排序;不配合-c,则只输出一次排序结果 -z, --zero-terminated 以0 字节而非新行作为行尾标志 --help 显示此帮助信息并退出 --version 显示版本信息并退出 POS 是F[.C][OPTS],F 代表域编号,C 是域中字母的位置,F 和C 均从1开始计数 如果没有有效的-t 或-b 选项存在,则从前导空格后开始计数字符。OPTS 是一个或多个 由单个字母表示的顺序选项,以此覆盖此key 的全局顺序设置。如果没有指定key 则 将其整个行。 指定的大小可以使用以下单位之一: 内存使用率% 1%,b 1、K 1024 (默认),M、G、T、P、E、Z、Y 等依此类推。 如果不指定文件,或者文件为"-",则从标准输入读取数据。 *** 警告 *** 本地环境变量会影响排序结果。 如果希望以字节的自然值获得最传统的排序结果,请设置LC_ALL=C。
[root@www ~]# cat /etc/passwd | sort #sort 是默认以第一个数据来排序,而且默认是以字符串形式来排序,所以由字母 a 开始升序排序。 [root@www ~]# cat /etc/passwd | sort -t ':' -k 3 #/etc/passwd 内容是以 : 来分隔的,我想以第三栏来排序,该如何 [root@www ~]# cat /etc/passwd | sort -t ':' -k 3n #用数字排序,默认是以字符串来排序的 [root@www ~]# cat /etc/passwd | sort -t ':' -k 3nr #倒序排列,默认是升序排序 [root@www ~]# ccat /etc/passwd | sort -t':' -k 6.2,6.4 -k 1r #对/etc/passwd,先以第六个域的第2个字符到第4个字符进行正向排序,再基于第一个域进行反向排序 [root@www ~]# cat /etc/passwd | sort -t':' -k 7 -u #查看/etc/passwd有多少个shell:对/etc/passwd的第七个域进行排序,然后去重
来源: http://l.51yip.com/search/sort
相关推荐
wc、sort 和 diff 命令是 Linux 中三个非常有用的文件处理命令,本文将详细介绍这三个命令的使用方法和选项。 wc 命令 ------ wc 命令是 Linux 中一个非常有用的命令,用于统计文件中的字节数、字数、行数等信息。...
`sort`命令是Linux系统中用于对文本文件内容进行排序的工具,它的功能强大且灵活,可以处理多种排序需求。本文将详细介绍`sort`命令的基本用法和常见选项。 首先,`sort`命令的基本格式如下: ```bash sort [-cmu]...
Linux Shell Sort 从入门到精通 Linux Shell 中的 Sort 命令是非常实用的命令之一,它可以对文本文件进行排序、去重、提取等操作。本文将从 Sort 命令的基本语法开始,逐步深入到高级用法,最后通过实践案例来巩固...
Linux 下 uniq 和 sort 命令用法详解 uniq 命令是 Linux 中的一个文本处理命令,用于去除文本中的重复行。该命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用...
Sort 命令的基本用法是使用 sort 命令后跟着要排序的文件名,例如 sort /etc/passwd 将对 /etc/passwd 文件进行排序。Sort 命令也可以使用多种选项来控制排序的行为,例如使用 -r 选项可以倒转排序的次序,使用 -u ...
下面我们将详细探讨`sort.exe`的功能、使用方法以及它在Windows和Linux环境中的差异。 首先,`sort.exe`的基本功能是对标准输入(stdin)或指定文件中的行进行排序,并将结果输出到标准输出(stdout)。在命令行中...
在Linux系统中,`sort`命令是一个非常实用且强大的文本处理工具,主要用于对文本文件中的行进行排序。根据给定的文件信息,我们将深入探讨`sort`命令的多个功能选项,以及它们如何帮助用户更有效地管理和操作数据。 ...
Linux sort 命令参数及用法详解 Linux sort 命令是一个功能强大且实用的命令行工具,用于对文本文件的内容进行排序。sort 命令的主要功能是将文本文件的内容按照指定的顺序进行排序,以行为单位进行排序。 语法:...
下面将详细讲解这些工具的使用方法和应用场景。 1. `sort`命令:这个命令用于对文本文件中的行进行排序。你可以指定排序的依据,比如按照字母顺序、数字大小或者自定义规则。`sort`还可以按字段(列)进行排序,并...
Linux 下 uniq 和 sort 命令用法 uniq 命令是 Linux 中的一个文本处理命令,用于删除或显示文本文件中的重复行。它可以读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是...
在Linux系统中,awk、cut、sort和sed是四个非常重要的命令行工具,它们用于文本处理和数据操作。这些工具在日常的系统管理和数据...对于Linux系统管理员和开发者来说,熟悉awk、cut、sort和sed的使用是必备技能之一。
这里我们将探讨C语言中实现排序的一些基本方法,以及如何在Linux、Ubuntu和Unix等类Unix系统上的终端中编译和运行C程序。 1. **基本排序算法:** - **冒泡排序(Bubble Sort)**:通过不断交换相邻的不正确顺序...
如果单纯地使用sort按行进行排序比较简单, 但是使用sort按多个列值排列,同时使用tab作为分隔符,而且对于某些列需要进行逆序排列,这样sort命令写起来比较麻烦了 比如下面的文件内容,使用[TAB]进行分割: ...
用法:sort +选项 +文件名(可跟多个文件) 示例1:cat 1.txt sort 1.txt #文字,默认按字母a-z排序 实示例2:cat 2.txt sort 2.txt #数字,默认按1-9排序 -n 参数:sort -n 2.txt #加-n,把数字从小到大排序...
本章节不深入讨论所有`sort`的排序方法或不同开关的组合使用,而是集中介绍`sort`的主要选项,并通过大量实例来阐述。 #### 11.1.2 sort的选项 `sort`命令的一般格式如下: ``` sort [-cmu] [-o output_file] ...
`sort`命令是Linux系统中用于对文件内容进行排序的工具,它能够按照特定规则对文本文件的每一行进行比较并重新排列。该命令的基本语法是`sort [-options]...掌握`sort`命令的使用,能大大提高在Linux环境下的工作效率。
**Linux中的sort命令详解** **一、sort命令基础与实战应用** sort命令是Linux系统中一个强大且实用的文本处理工具,它允许用户对文件内容进行排序,...熟练掌握sort命令的使用,能极大地提高Linux系统下的工作效率。
目标:为Windows操作系统建立一个兼容Unix命令的命令...展望:其实开发命令行接口,使用getopt()等函数是比较方便的,但这是作者开发到一半的时间才知道的事情,所以未能及时更换开发方法,希望有缘人能弥补这一缺憾。