0

合計約 30000 行のこのような繰り返しパターンを持つファイルがあります。

K     102940
-1.34869738    20.57483945   -50.68597047
23.77974649   -24.07345423    15.78597590
---
K     102942
-1.34869738    20.57483945   -50.68597047
23.77974649   -24.07345423    15.78597590
---

2 行目の 3 番目のフィールドをチェックする必要があります。それが -20 と +20 の範囲内にある場合は、次の行 (上記の例の 3 行目) のみを印刷したいと思います。値が範囲内にない場合 (上記のように)、2 + 100 行目をチェックします (その間の行の束を無視します)。私がこれまでに持っているものは次のとおりです。

awk -v l=2 -v d=100 'NR==l'; 'if ($3 =={-20..20}); {getline;print;exit}; else (l+=d) next; fi' inputfile

しかし、エラー '-bash: if ... next: command not found

コードを改善する方法を知っている人はいますか? それとも、このファイルを処理するためのより良い方法でしょうか?

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1