首页 > 解决方案 > 基于重复分割文件

问题描述

专家我有一个文件如下,其中第一列重复 0.0,5.0,10。现在我想在第一列行的重复处拆分第三列,并希望将数据并排排列如下:

 0.0     0.0   0.50000E+00
 5.0     0.0   0.80000E+00
10.0     0.0   0.80000E+00
 0.0     1.0   0.10000E+00
 5.0     1.0   0.90000E+00
10.0     1.0   0.30000E+00
 0.0     2.0   0.90000E+00
 5.0     2.0   0.50000E+00
10.0     2.0   0.60000E+00

这样我的最终文件将是

0.50000E+00  0.10000E+00  0.90000E+00
0.80000E+00  0.90000E+00  0.50000E+00
0.80000E+00  0.30000E+00  0.60000E+00
 

这样我的最终文件将是

标签: linuxbashfor-loop

解决方案


使用 GNU awk:

awk '{ map[$1][NR]=$3 } END { PROCINFO["sorted_in"]="@ind_num_asc";for(i in map) { for ( j in map[i]) { printf "%s\t",map[i][j] } printf "\n" } }' file

处理每一行并添加到一个二维数组映射中,第一个空格分隔字段作为第一个索引,行号作为第二个。第三个字段是值。在处理文件结束时,设置数组排序,然后循环遍历数组,以所需格式打印值。


推荐阅读