Linux 基于重复分割文件
专家我有一个文件,如下所示,其中第一列重复0.0,5.0,10。现在我想在第一列行的重复处拆分第三列,并希望按如下方式并排排列数据:Linux 基于重复分割文件,linux,bash,for-loop,Linux,Bash,For Loop,专家我有一个文件,如下所示,其中第一列重复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.9000
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
因此,我的最终文件将是使用GNU awk的:
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
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
处理每一行并添加到二维数组映射,第一个空格分隔的字段作为第一个索引,第二个是行号。第三个字段是值。在处理文件结束时,设置数组顺序,然后在数组中循环,以所需格式打印值