【发布时间】:2020-02-03 19:24:20
【问题描述】:
我正在尝试从第二列中的当前组行中减去前一个组行。例如,以下脚本重复了 100 次。
A
322 0.2
322 0.2
322 0.2
B
455 0.35
455 0.35
455 0.35
C
566 0.92
566 0.92
566 0.92
A
322 0.18
322 0.18
322 0.18
B
455 0.33
455 0.33
455 0.33
C
566 0.99
566 0.99
566 0.99
我希望起点是 A,这意味着第一组的 0.2 的分数将保持不变,而第二组的 0.18 将保持不变。换句话说,C-B 然后 B-A。查看所需的输出。
A
322 0.2
322 0.2
322 0.2
B
455 0.15
455 0.15
455 0.15
C
566 0.57
566 0.57
566 0.57
A
322 0.18
322 0.18
322 0.18
B
455 0.15
455 0.15
455 0.15
C
566 0.66
566 0.66
566 0.66
我尝试将这段代码打印在第三列,但它似乎从上一行减去,而不是前一组。
awk '{$3 = $2 - prev2; prev2 = $2; print;}'
【问题讨论】:
-
我认为所需的操作是从 B 的第 2 列(例如,
0.35 - 0.2 = 0.15 / 0.33 - 0.18 = 0.15)中减去 A 的第 2 列,从 C 的第 2 列(例如,@ 987654325@) -
我加了一些词。我只想从 B 组中减去 C 组,然后从 A 组中减去 B 组。
-
是的,有100次重复的重复块。
-
您的输入有 2 个名为“A”的组,一组全为 0.2,另一组全为 0.18。它们有某种关联吗?我在您发布的输出中没有看到任何表明
group C subtracted from group B等结果的内容。请检查您发布的输入/输出是否真正代表了您的真正问题以及您在文本中描述的内容。如果您有时有 3 行,有时有 4 行 - 请在您的示例中说明这一点,不要只在评论中告诉我们。 -
您没有任何答案并不意味着没有人可以回答,这意味着我们不知道您在问什么。那么,为它发布解决方案对任何人都没有用。只需将问题改进为易于理解或删除即可。