我有一个大文件,其中包含以下格式的行:
field1:field2:field3:field4:field5
我想在field4
上排序.但是,field4
本身是这样"细分"的:
field41_field42_field43_field44
排序field4
的命令是
sort -t_ -k1,1d -k2,2g -k3,3g -k4,4g
所以我要做的是按:
拆分每一行,然后将第四个字段拆分_
并对其执行指定的排序。有没有简单的方法可以做到这一点?
可以在此处找到一小部分数据。
我自己不喜欢这样 - 您可以通过暂时将第四个字段复制到记录的开头,按它排序,然后将其删除来执行施瓦茨变换
awk -F':' -vOFS=':' '{print $4,$0}' file |
sort -k1,1d -k2,2n -k3,3n -k4,4n -t"_" |
cut -f2- -d":"