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
次のアルゴリズムを使用して編集したいと思います。最後の値 (この場合) から始めて、-6152.48カウント数がフィールド 1 の 85% 未満かどうかを確認したいと思います。これが true の場合、このフィールド値を $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 を使用して必要なロジックを実装する方法がわかりません。つまり、何らかの条件 if ($i > 0.85 * $1) flag = 1; 次に、上記の for ループをエスケープします。
おそらく、for ループと while ループは必要ありません。
何か案は?