【发布时间】:2018-04-06 01:47:05
【问题描述】:
我想为每个具有“@ value1 value2”格式的“标题行”的块找到第 3 列的最小值。文件是这样的
@ 62.65 -50.35
0 1.50 1.676
1.67 1.50 1.677
1.67 2.25 1.423
2.90 2.25 2.902
2.90 4.95 2.903
3.04 4.95 3.049
@ 63.61 -50.45
0 1.50 1.654
3.42 1.50 1.875
3.43 2.19 3.430
5.31 2.19 1.032
5.32 6.23 5.320
5.43 6.23 5.434
在此之后,我想打印标题以及最小的 $3 的整行。
所以,我的输出文件应该是这样的
@ 62.65 -50.35
1.67 2.25 1.423
@ 63.61 -50.45
5.31 2.19 1.032
这是我迄今为止尝试过的:
awk '{if (!/^@/) {if ($3 < min) {$3=min;} print $1, $2, $3, min; min = $3;} else if (/^@/) min = 10; print $1 $2 $3;}' input.txt > output.txt
我很难将块分开并“重置”最小值(我试图将“开始”值设置为高 - 即 10)。
我是编程新手,目前主要使用 awk - 如果您能帮助我,那就太好了!非常感谢!干杯,伊西
【问题讨论】:
-
您的预期输出是什么,您可以编辑问题并提供它。
-
另外,请添加您到目前为止的尝试。没用也没关系,
-
欢迎来到 SO。你已经尝试了什么?不要犹豫,访问help center。