sort命令
用途 用于文本排序的命令,以文本行为单位按照ascii码顺序进行排序。支持去重、逆序等规则。
用法
sort [option] filename
-b,--ignore-leading-blanks 忽略每一行前面的所以空白部分,仅从第一个可见字符开始比较排序
-u,--unique 去重
-r, --reverse 逆序排序
-o,--output 重定向输入到指定的文件(与>重定向不一样,使用>重定向不能重定向到原有文件,-o是用于排序后,再次重定向到原文件)
-n,--numeric-sort 根据数字值大小排序(比如10,2正常排序,如果不添加-n,就会依据ascii码排成:10,2)
-k, --key=2[,5] 以第二到第五部分作为key进行排序
-t,--field-separator=SEP 以SEP为分隔符分割每一行字符(常与-k合用)
示例
1、若有文本hjc.txt内容如下:
3
1
2
10
则sort hjc.txt,输出为:
1
10
2
3
添加选项:-n 即完整名:sort -n hjc.txt 输出为:
1
2
3
10
2、若有文件hello.txt内容如下:
International Labour Day:3
marriage leave:15
National Day:7
Spring Festival:5
Weekend Day:2
每一行以分号分割,分别表示假期和放假天数。现在想进行有意义的排序:按照放假天数由多到少进行排序,并把排序结果重新写会到hello.txt,则命令是:
sort -n -r -k 2 -t: hello.txt -o hello.txt
排序后结果为:
marriage leave:15
National Day:7
Spring Festival:5
International Labour Day:3
Weekend Day:2
注意:sort a > a ,后果很严重,数据没了。并不是期望的把排序结果再写会到a,正确应该是:sort a -o a。(我想不会有人会故意用sort a>a来清空数据吧,那么为什么Linux还允许这种极易出错的命令存在而毫无警示呢? )