sort -nr -t “ “ -k1 ##排序以空格为分隔符对第一列进行排序
选项说明: -c:检测给定的文件是否已经已经排序。如未排序,则会输出诊断信息,提示从哪一行开始乱序。 -C:类似于”-c”,只不过不输出任何诊断信息。可以通过退出状态码1判断出文件未排序。 -m:对给定的多个已排序文件进行合并。在合并过程中不做任何排序动作。 -b:忽略字段的前导空白字符。空格数量不固定时,该选项几乎是必须要使用的。”-n”选项隐含该选项。 -d:按照字典顺序排序,只支持字母、数值、空白。除了特殊字符,一般情况下基本等同于默认排序规则。 —debug:将显示排序的过程以及每次排序所使用的字段、字符。同时还会在最前几行显示额外的信息。 -f:将所有小写字母当成大写字母。例如,”b”和”B”是相同的。 :在和”-u”选项一起使用时,如果排序字段的比较结果相等,则丢弃小写字母行。 -k:指定要排序的key,key由字段组成。key格式为”POS1[,POS2]”,POS1为key起始位置,POS2为key结束位置。 -n:按数值排序。空字符串””或”\0”被当作空。该选项除了能识别负号”-“,其他所有非数字字符都不识别。 当按数值排序时,遇到不识别的字符时将立即结束该key的排序。 -M:按字符串格式的月份排序。会自动转换成大写,并取缩写值。规则:unknown<JAN<FEB<…<NOV<DEC。 -o:将结果输出到指定文件中。 -r:默认是升序排序,使用该选项将得到降序排序的结果。 :注意:”-r”不参与排序动作,只是操作排序完成后的结果。 -s:禁止sort做”最后的排序”。 -t:指定字段分隔符。 :对于特殊符号(如制表符),可使用类似于-t$’\t’或-t’ctrl+v,tab’(先按ctrl+v,然后按tab键)的方法实现。 -u:只输出重复行的第一行。结合”-f”使用时,重复的小写行被丢弃。
(1).sort命令默认按照字符集的排序规则进行排序,可以指定”-d”选项按照字典顺序排序,指定”-n”按照数值排序,指定”-M”按照字符格式的月份规则排序,指定”-h”按照文件容量大小规则排序。
(2).sort使用”-t”选项指定的分隔符对每行进行分割,得到多个字段,分隔符不作为字段的内容。默认的分隔符为空白字符和非空白字符之间的空字符,并非网上众多文章所说的空格或制表符(原文:By default, fields are separated by the empty string between a non-blank character and a blank character.)。
例如,” foo bar”默认将分隔为两个字段” foo”和” bar”,而使用空格作为分隔符时将分隔为三个字段:第一个字段为空,第二个字段和第三个字段为”foo”和”bar”。使用下面三个sort语句可以验证默认的分隔符并非空格。
(3).使用”-k”选项指定排序的key。不指定排序key时,整行将成为排序key,即对整行进行排序。
(4).当排序规则选项(例如”n”、”d”、”M”、”h”)发现不识别的符号时,将立即结束当前key的排序。默认排序规则是字符集的排序规则,通常能识别所有字符,所以总会对整个key进行完整的排序。这是”何时跨字段、跨key比较?”的问题。
