【发布时间】:2018-03-06 16:07:31
【问题描述】:
我有一张包含数千列和行的大表。但为了简化起见,假设我有一个包含 11 行和 100 列的表。表格单元格包含介于 0 和 1 之间的值。表格如下所示:
Sample1 Sample2 Sample3 Sample4
1 0 0.001 0.002
0.74 0.52 0.654 0.75
0.65 0.64 0.455 0.72
0.24 0.51 0.512 0.78
0.25 0.555 0.557 0.25
0.003 0.454 0.532 0.23
0.02 0.56 0.643 0.22
1 0.495 0.555 0.99
0.992 1 0.999 0.98
0.12 0 0.968 1
现在我想扫描所有单元格以查找特定范围 0.80 >= value >= 0.70 内的所有值。任何包含值的单元格都将打印整列,包括标题。 预期的输出如下:
Sample1 Sample4
1 0.002
0.74 0.75
0.65 0.72
0.24 0.78
0.25 0.25
0.003 0.23
0.02 0.22
1 0.99
0.992 0.98
0.12 1
使用 awk 的命令会更好,但我不知道它是否最适合这种提取。
请告诉我如何做到这一点。任何帮助将不胜感激。谢谢。
【问题讨论】:
-
可能会两次传递文件。第一次传递,根据给定条件为每一列构建具有真/假值的数组。下一次传递,打印所需的列…你必须自己尝试一些事情并添加到问题中。有关两个文件处理的示例,请参见backreference.org/2010/02/10/idiomatic-awk
-
你的输出是任意的:它不符合条件 "0.80 >= value >= 0.70"
-
@RomanPerekhrest 我认为这意味着
0.7-0.8... col1 具有0.74和 col4 具有0.75/0.72/0.78之间的值
标签: awk multiple-columns extraction