Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 基于重复分割文件_Linux_Bash_For Loop - Fatal编程技术网

Linux 基于重复分割文件

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,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
 
因此,我的最终文件将是使用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
处理每一行并添加到二维数组映射,第一个空格分隔的字段作为第一个索引,第二个是行号。第三个字段是值。在处理文件结束时,设置数组顺序,然后在数组中循环,以所需格式打印值