Linux使用'嵌套'字段排序

时间:2014-04-04 13:35:49

标签: linux sorting command-line gnu-sort

我有一个大文件,其中包含以下格式的行:

field1:field2:field3:field4:field5

我想对field4进行排序。但是,field4本身已被细分为'像这样:

field41_field42_field43_field44

排序field4的命令是

sort -t_ -k1,1d -k2,2g -k3,3g -k4,4g

所以我要做的是将每一行拆分为:,然后将第四个字段拆分为_并对其执行指定的排序。是否有捷径可寻?

可以找到一小部分数据here

1 个答案:

答案 0 :(得分:1)

我自己不喜欢这样 - 您可以通过暂时将第四个字段复制到记录的开头,按其排序然后将其删除来执行Schwartzian transform

awk -F':' -vOFS=':' '{print $4,$0}' file | 
sort -k1,1d -k2,2n -k3,3n -k4,4n -t"_" | 
cut -f2- -d":"