在编辑awk代码以打印范围内的最小值时需要帮助吗

在编辑awk代码以打印范围内的最小值时需要帮助吗,awk,range,max,edit,minimum,Awk,Range,Max,Edit,Minimum,感谢Origineil帮助修改awk脚本。如果间隔是整数,那么awk脚本工作得很好,但是如果我使用小于1的间隔,比如0.2,那么它会给出错误的输出。我有一个包含以下数据的sss文件: H34 5.0856 5.45563 H39 5.0857 5.45573 H26 6.4822 6.81033 H30 6.4822 6.81033 H32 6.4823 6.81043 H40 6.4824 6.81053 H33 7.6729

感谢Origineil帮助修改awk脚本。如果间隔是整数,那么awk脚本工作得很好,但是如果我使用小于1的间隔,比如0.2,那么它会给出错误的输出。我有一个包含以下数据的sss文件:

H34   5.0856    5.45563
H39   5.0857    5.45573
H26   6.4822    6.81033
H30   6.4822    6.81033
H32   6.4823    6.81043
H40   6.4824    6.81053
H33   7.6729    7.96531
H27   7.673     7.96541
H31   7.6731    7.96551
H38   7.6731    7.96551
H29   8.5384    8.80485
H28   8.5387    8.80514
H35   8.5387    8.80514
H37   8.5387    8.80514
H41   9.9078    10.1332
H36   9.9087    10.134
如果我运行awk命令

    awk '!e{e=$2+0.2;} $2-e>0{print "Range " ++i , c " entries. min: " min " max: " max ; e+=0.2; c=0; min=""} {if(!min)min=$2; c++; max=$2} END{print "Range " ++i , c " entries. min: " min " max: " max} ' ss
它给出的输出值之间的差值不超过脚本中指示的0.2:

 Range 1 2 entries. min: 5.0856 max: 5.0857
 Range 2 1 entries. min: 6.4822 max: 6.4822
 Range 3 1 entries. min: 6.4822 max: 6.4822
 Range 4 1 entries. min: 6.4823 max: 6.4823
 Range 5 1 entries. min: 6.4824 max: 6.4824
 Range 6 1 entries. min: 7.6729 max: 7.6729
 Range 7 1 entries. min: 7.673 max: 7.673
 Range 8 1 entries. min: 7.6731 max: 7.6731
 Range 9 1 entries. min: 7.6731 max: 7.6731
 Range 10 1 entries. min: 8.5384 max: 8.5384
 Range 11 1 entries. min: 8.5387 max: 8.5387
 Range 12 1 entries. min: 8.5387 max: 8.5387
 Range 13 1 entries. min: 8.5387 max: 8.5387
 Range 14 1 entries. min: 9.9078 max: 9.9078
 Range 15 1 entries. min: 9.9087 max: 9.9087
有人能帮我吗

提前感谢。

最小值和最大值我想您指的是范围内看到的第一个和最后一个条目

对于提供的输入,我将18改为17,因此并非所有的最大值都是范围的上限

脚本:

awk '!e{e=$1+4;} $1-e>0{print "Range " ++i , c " entries. min: " min " max: " max ; e+=4; c=0; min=""} {if(!min)min=$1; c++; max=$1} END{print "Range " ++i , c " entries. min: " min " max: " max} ' file
我引入了两个变量min和max来跟踪条目

输出:

 Range 1 4 entries. min: 2 max: 6
 Range 2 3 entries. min: 7 max: 10
 Range 3 3 entries. min: 12 max: 14
 Range 4 2 entries. min: 16 max: 17
 Range 5 1 entries. min: 19 max: 19

谢谢Origineli,这正是我想要的