【发布时间】:2016-03-11 12:04:08
【问题描述】:
编者注:原题提到tabs作为字段分隔符。
在诸如
这样的文本中500 east 23rd avenue Toronto 2 890 400000 1
900 west yellovillage blvd Mississauga 3 800 600090 3
如何按倒数第二列的升序排序?
编者注:OP 后来提供了另一个示例输入行,500 Jackson Blvd Toronto 3 700 40000 2,其中仅包含 8 个空格分隔的输入字段(与 9以上),揭示了在输入中处理可变个字段的需要。
【问题讨论】:
-
info sort或man sort。 -
简答
sort -n -k 8 <path/to/file.txt按每行中的第 8 个键(字段)进行数字排序。 -
标签在哪里?字段的数量是否像示例中那样保持不变,或者您是否可以拥有诸如“899 edmonton street montreal 9 499 333222 9”之类的项目(半随机地凭空提取名称和数字)。它没有北/南/东/西指示符,因此它以 8 个字段而不是 9 个结束。如果该结构没有固定数量的字段,则您必须比它更努力地工作。实际上,您可能需要重新处理数据,以便可以使用 sort 命令拆分字段以便更轻松地处理,将数字和城市与街道地址以及彼此分开。
-
500 Jackson Blvd Toronto 3 700 40000 2 900 yellowvillage avenue road Mississauga 3 800 600090 3. 555 calway road Toronto 2 840 500000 4 在这种情况下,倒数第二列表示公里,但也有在各自的行中有不同的列号,那么如何按倒数第二列的升序对其进行排序。这是我的问题
标签: linux sorting unix awk scripting