模拟sort多字段排序
data:
PIC aaa 12:00 23 PIC aaa 13:00 34 VOD bbb 02:15 55 VOD vds 03:22 65 VOD vds 04:22 40 VOD abs 05:22 30 DLL rft 15:10 22 IDD kjh 17:06 86 PIC hgf 12:45 30 PIC bbb 11:45 35
script1:
#!/bin/awk -f # asorti对数组的下标进行排序 # 返回数组元素的个数 { a[$1][$4]=$0; # M1 } END { for(i=1; i<=asorti(a,b);i++) for(j=asorti(a[b[i]],c); j>=1; j--) print a[b[i]][c[j]] }
script2:
#!/bin/awk -f { A[$1$4]=$0;B[$1];C[$4] # M2 } END { for(m=1; m<=asorti(B,x); m++) for(n=asorti(C,y); n>=1; n--) if(x[m]y[n] in A) print A[x[m]y[n]] }
result:
DLL rft 15:10 22 IDD kjh 17:06 86 PIC bbb 11:45 35 PIC aaa 13:00 34 PIC hgf 12:45 30 PIC aaa 12:00 23 VOD vds 03:22 65 VOD bbb 02:15 55 VOD vds 04:22 40 VOD abs 05:22 30
备注:
# Arrays of arrays
awk 'BEGIN { arr["a"]["b"]=1; arr["a"]["c"]=2; for( i in arr) # 第一维下标"a" for( j in arr[i]) # 第二维下标"b", "c" print i,j,arr[i][j] }' output: a b 1 a c 2
*** 你必须十分努力,才能看起来毫不费力 ***