Awk结合和while循环algorithm

我有几百个文本文件,我想用awk编辑。 一个例子是

5483.39 5134.64 4602.88 3953.89 3271.87 2495.87 1788.98 1285.57 1034.09 1196.25 1851.03 2874.14 3797.68 4361.26 4717.09 4829.74 4760.26 4758.12 4790.80 4763.77 4734.56 3311.89 -811.57 -6152.48 

我想用下面的algorithm编辑。 从最后一个值(在这种情况下为-6152.48 )开始,我想检查计数的数量是否小于字段1中的85%。如果这是真的,则将该字段的值重置为$ 1。 然后,我会重复$(NF-1)等。但是,我第一次遇到这个85%的条件不满足的字段值(即$ i> 0.85 * $ 1),我想逃避循环,离开所有其他领域是。

要做到这一点,我想我需要一个foreach循环扫描每个字段值和一个while循环检查条件。 这是我迄今为止

 awk 'BEGIN{flag=0} {for(i=1;i<=NF;i++) a[i] = $i/$1} {for(i=NF;i>=1;i--) print a[i],flag}' file 

我不确定如何使用awk实现所需的逻辑。 即如果($ i> 0.85 * $ 1)flag = 1, 然后逃避上面的循环。

我可能不需要一个for和while循环。

有任何想法吗?

Awk伪代码:

 for(i=NF; i>=1; i--) { if($i>0.85*$1) break; else print $i; } 

break语句明确地用于从循环转义的目的。