写底层代码的时候,经常使用sort命令对文件或者文本进行排序,本文对sort做简单记录作为学习笔记。sort 的功能是将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
常用的参数
其他排序参数:
例子
? ~ cat 1.txt
AA:BB:CC
aa:30:6
cc:50:3
dd:20:7
bb:10:2
ee:40:4
ee:60:1
以:分隔,按照第三列排序
? ~ sort -t: -k3 1.txt
ee:60:1
bb:10:2
cc:50:3
ee:40:4
aa:30:6
dd:20:7
AA:BB:CC
常用的参数
- -t, --field-separator=SEP 分隔符:指定排序时所用到的栏位分隔符,通常和 k 一起使用
- -k, --key=POS1[,POS2] 指定需要排序的列数,比如-k 1,3 按照第一列和第三列排序。
- -b, --ignore-leading-blanks 忽略每行前面开始处的空格字符
- -d, --dictionary-order 排序时,处理英文字母、数字和空格字符,以字典顺序排序。忽略其他所有字符
- -f, --ignore-case 将小写字母视为大写字母进行排序。
- -i, --ignore-nonprinting 排序时,处理 040~176 之间的 ASCII 字符,忽略其他所有字符。
- -r, --reverse 以相反的顺序进行排序,倒序。
- -u --unique 去掉重复的记录
- -g, --general-numeric-sort 按照数值大小进行排序。 和n在一般情况的都一致,对于科学计数的排序可以使用-g
- -n, --numeric-sort 按照字符的数值大小进行排序。
- -M, --month-sort 将前面3个字母按月份的缩写进行排序。
- -c, --check 检查文件是否已经按照顺序排序,排序过为真。
- -m, --merge 将几个排序好的文件进行合并。
- -o, --output=FILE 将排序后的结果存入FILE,不在控制台输出。
例子
? ~ cat 1.txt
AA:BB:CC
aa:30:6
cc:50:3
dd:20:7
bb:10:2
ee:40:4
ee:60:1
以:分隔,按照第三列排序
? ~ sort -t: -k3 1.txt
ee:60:1
bb:10:2
cc:50:3
ee:40:4
aa:30:6
dd:20:7
AA:BB:CC