sort 文本文件中行排序

2015-08-13 0 By admin

sort是Linux命令,主要用于排序文件、对已排序的文件进行合并,并检查文件以确定它们是否已排序。
sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。
-(减号)代替文件名指定标准输入。如果您不指定任何文件名,那么该命令对标准输入排序。

一、使用方式

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 ... ]

二、选型参数介绍

-n :使用『纯数字』进行排序(默认是以文字型态来排序的)。
-r :反向排序。
-u :就是 uniq ,相同的数据中,仅出现一行代表。
-t :分隔符,默认是用 [tab] 键来分隔。
-k :以那个区间 (field) 来进行排序的意思。
-f :忽略大小写的差异,例如 A 与 a 视为编码相同。
-b :忽略最前面的空格符部分。
-c :检查输入是否已按照标志中指定的排序规则进行排序。如果输入文件排序不正确,就返回一个非零值。
-d :使用字典顺序排序。比较中仅考虑字母、数字和空格。
-i :比较中忽略所有非打印字符。
-k KeyDefinition :指定排序关键字。
-o OutFile :将输出指向OutFile参数指定的文件,而不是标准输出。

三、使用示例

1、以:来分隔的,按照第三栏来排序
[root@www ~]# cat /etc/passwd | sort -t ':' -k 3
2、默认是以字符串来排序的,如果想要使用数字排序
cat /etc/passwd | sort -t ':' -k 3n
3、默认是升序排序,如果要倒序排序
cat /etc/passwd | sort -t ':' -k 3nr
4、先以第六个域的第2个字符到第4个字符进行正向排序,再基于第一个域进行反向排序。
cat /etc/passwd | sort -t':' -k 6.2,6.4 -k 1r
5、对第七个域进行排序,然后去重
cat /etc/passwd | sort -t':' -k 7 -u