sorting - 基于两种逻辑对数据进行分组
问题描述
我有一个巨大的 4 列文本文件。第一列是序列号,第二列和第三列是坐标,第四列是值。这些是单元节点处变量的值。我想平均 4 个节点值以获取我的代码要读取的单元格值。例如,让我考虑具有以下数据的 3 x 3 笛卡尔单元:
1 0. 0. 5e-4
2 0.1 0. 5e-3
3 0.2 0. 5e-4
4 0.3 0. 5e-3
5 0. 0.1 5e-5
6 0.1 0.1 5e-7
7 0.2 0.1 5e-5
8 0.3 0.1 5e-2
9 0. 0.2 5e-4
10 0.1 0.2 5e-3
11 0.2 0.2 5e-4
12 0.3 0.2 5e-3
13 0. 0.3 5e-5
14 0.1 0.3 5e-7
15 0.2 0.3 5e-5
16 0.3 0.3 5e-2
我想按以下顺序对行进行分组:
1 0. 0. 5e-4
2 0.1 0. 5e-3
5 0. 0.1 5e-5
6 0.1 0.1 5e-7
2 0.1 0. 5e-3
3 0.2 0. 5e-4
6 0.1 0.1 5e-7
7 0.2 0.1 5e-5
3 0.2 0. 5e-4
4 0.3 0. 5e-3
7 0.2 0.1 5e-5
8 0.3 0.1 5e-2
5 0. 0.1 5e-5
6 0.1 0.1 5e-7
9 0. 0.2 5e-4
10 0.1 0.2 5e-3
6 0.1 0.1 5e-7
7 0.2 0.1 5e-5
10 0.1 0.2 5e-3
11 0.2 0.2 5e-4 and so on ...
上面的例子有两个逻辑。一,行数据(1,2,5,6 和 2,3,6,7 和 3,4,7,8)形成一组(我的网格的第一行)。紧随其后的是行 (5,6,9,10),我们在其中继续下一行数据。然后第一个逻辑再次继续(6,7,10,11 和 7,8,11,12 等等......)。
我使用以下“sed”命令来提取一组行,但考虑到我必须处理的数据大小,单独执行此操作很麻烦:
sed -n -e 1,2p -e 5,6p fileName
考虑到我上面提到的两种逻辑,我如何创建一个循环?
解决方案
这可能对您有用(GNU sed):
sed -n ':a;N;s/\n/&/5;Ta;P;s/[^\n]*\n//;h;P;s/.*\n\(.*\n.*\)/\1/p;g;ba' file |
sed '13~12,+3d'
这一致地遵循模式,即第 1,2 行后跟第 5,6 行,第 2,3 行后跟第 6,7 行等。结果被传递给 sed 的第二次调用,从第 13 行开始每 12 行删除 4 行.
推荐阅读
- informatica - 使用来自 wsdl 的数据并通过 Informatica 云将数据公开为 Rest 或 soap,以供 Salesforce 应用程序使用
- c++ - 在 c++ 句子中显示单词
- java - 下载文件时如何处理 URL 中的日文文件名。在 IE 和 FireFox 中面临的问题
- java - 表示应将其删除的令牌上的语法错误
- apache-kafka - 使用 Avro 和使用 NiFi 的 Confluent 模式注册表将 JSON 中的数据写入 KAFKA
- r - 想知道如何在 `mapply` 中正确使用 `%>%`?
- javascript - javascript localStorage中可更改的HTML下拉菜单
- c++ - 将模板函数传递给模板函数(Eigen Derived)
- c++ - 进行统一构建时的内联行为(clang)
- python - 尝试 pip install dict 包时出现 docker build 错误