sort排序

多列文本按照指定列排序

例如有文本格式

FirstName, FamilyName, Address, PhoneNumber

需要按照FamilyName排序。

sort工具提供了-k参数按照某列或多列排序。例如首先按照FamilyName排序然后按照FirstName排序:

sort -k 2,2 -k 1,1 file.txt
  • -k, --key=POS1[,POS2]:

POS1开始排序key,终止于POS2key。

POS是F[.C][OPTS]F是字段编号,C是该字段的字符位置。

  • -t, --field-separator=SEP

设置 SEP 替代默认的空白分隔符

按照数值排序

sort默认是按照ASCII码排序,如果要按照数值排序,则使用参数 -n

上述结合 -k -n 非常常用的排查场景,例如我们统计IP地址(原日志 ip.log 的第5列)出现频率并排序:

cat ip.log | awk '{print $5}' | sort | uniq -c | sort -k 1 -n

参考

Last updated