【发布时间】:2018-08-21 18:52:10
【问题描述】:
选择找到的最大最小值之后的行
输入文件
22 101 5
23 102 5
24 103 5
25 104 23
26 105 25
27 106 21
28 107 20
29 108 8
30 109 6
31 110 7
为了找出我的问题,我尝试减去第 3 列并打印第 4 列中找到的最小值之后的行。在这种情况下,在第 7 行之后
awk '{$4 = $3 - prev3; prev3 = $3; print $0}' file
22 101 5
23 102 5 0
24 103 5 0
25 104 2 18
26 105 2 2
27 106 2 -4
28 107 2 -1
29 108 8 -12
30 109 6 -2
31 110 7 1
期望的输出
29 108 8
30 109 6
31 110 7
我相信有更好更简单的方法来获得相同的输出。
提前致谢
【问题讨论】:
-
你能澄清你的问题描述吗?是否必须在找到最小值和之后?
valor是错字吗?你的意思是value,还是一个特定的术语(如果是,请解释)。第一行和第二行在这里有什么意义或用处吗? -
不清楚,您在第 4 列中提到逻辑
+加法,但您正在写减法?也不清楚你在说哪个最大值和最小值?第 4 列还是第 3 列?请使用正确的示例编辑您的帖子,然后回复我们。 -
如果只有两行会发生什么,例如:
22 101 5 <newline> 23 102 7?应该打印两行还是只打印最后一行(“0th”行的默认值是多少)? -
鉴于输出和第四列中的值,我猜“最大最小 valor”是指两个连续行之间差异的最大 负 值。但这必须由 OP 澄清。
标签: awk