我有
200 34 323 160
0.3 0.6 0.5 0.2
0.4 0.9 0.7 0.9
和需要
34 160 200 323
0.6 0.2 0.3 0.5
0.9 0.9 0.4 0.7
..列在第一行中按值排序。以bash或awk格式。听起来很简单,但是..
awk 'NR==1 {for (i=1; i<=NF; i++) {print $i " " i} }' inputfilename >headers.txt
sort -k1,1n headers.txt >headerssort.txt
awk 'NR==FNR {a[NR]=$2} NR!=FNR {for (i=1; i<NF; i++) {printf $a[i] " "}; print $a[NF]}' headerssort.txt inputfilename >outputfilename
本质上,您要做的是创建一个临时文件headers.txt
,该文件将输入文件(inputfilename
)第一行中的所有值打印在单独的行上,以及该值(列号)在输入文件中的位置。然后根据值对该文件排序(当然仍然保持原始列号)并获得headerssort.txt
文件。最后,您使用此排序的文件以正确的顺序打印列,从而得到所需的文件(outputfilename
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句