linux - 基于重复分割文件
问题描述
专家我有一个文件如下,其中第一列重复 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:
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
处理每一行并添加到一个二维数组映射中,第一个空格分隔字段作为第一个索引,行号作为第二个。第三个字段是值。在处理文件结束时,设置数组排序,然后循环遍历数组,以所需格式打印值。
推荐阅读
- woocommerce - Hide "out of stock" label on woocommerce archive page
- docker - node.js docker容器与本地redis服务器的连接(127.0.0.1)
- amazon-s3 - EKS Pod S3 访问被拒绝
- javascript - 如何从 ag 网格中获取所有行并过滤行
- yolo - 对信号迹线的区域进行分类
- google-bigquery - 在 Big Query 中创建表
- android - 使用otp登录一次后应用程序崩溃,然后在注销后尝试再次进入登录页面
- javascript - 如何在每次加载时更改背景图像
- c# - 如何从 StreamReader 读取长度为 n 的字符串?
- python-2.7 - 如何从命令( os.system (Path) )或(os.startfile(path/Filename))在编辑器中打开单个 python 文件(或任何代码文件)?