我有一个大文件,其中包含以下格式的行:
field1:field2:field3:field4:field5
我想对field4
进行排序。但是,field4
本身已被细分为'像这样:
field41_field42_field43_field44
排序field4
的命令是
sort -t_ -k1,1d -k2,2g -k3,3g -k4,4g
所以我要做的是将每一行拆分为:
,然后将第四个字段拆分为_
并对其执行指定的排序。是否有捷径可寻?
可以找到一小部分数据here。
答案 0 :(得分:1)
我自己不喜欢这样 - 您可以通过暂时将第四个字段复制到记录的开头,按其排序然后将其删除来执行Schwartzian transform
awk -F':' -vOFS=':' '{print $4,$0}' file |
sort -k1,1d -k2,2n -k3,3n -k4,4n -t"_" |
cut -f2- -d":"