1

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

field1:field2:field3:field4:field5

我要排序field4。但是,field4它本身是这样“细分”的:

field41_field42_field43_field44

排序的命令field4

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

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

可以在此处找到一小部分数据。

4

1 回答 1

1

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

awk -F':' -vOFS=':' '{print $4,$0}' file | 
sort -k1,1d -k2,2n -k3,3n -k4,4n -t"_" | 
cut -f2- -d":"
于 2014-04-04T14:34:22.683 回答