0

4列のファイルがあります。列 2 と 4 には数値があります。

55 k 3
b 59 l 3
c 79 m 277
d 255 n 277
e 257 o 267
f 267 p 287
g 290 q 287
時間 290 r 287
私は 310 s 900

同じ行に限定されず、列 2 のすべての行を列 4 の行と比較し、列 4 の値が 1 から 30 の範囲で列 2 の値よりも大きい列 4 の行のみを選択する必要があります。 . たとえば、列 4 の行 3 も、行 4、5、6 で列 2 の値と同じ範囲に差があるため、選択されます。上記の条件を満たすサンプル ファイルからの可能な出力は、次のようになります。

メートル 277
n 277
o 267
287ページ
287
r287

私の問題を明確に提示していない場合は申し訳ありませんが、事前に感謝します。

4

1 に答える 1

4

私が正しく理解しているなら、あなたは欲しい

awk '{for(i=1;i<=30;++i) feasible[i+$2]=1;} {val[NR] = $4; letter[NR] = $3} END {for(y in val) if(feasible[val[y]]) print letter[y], val[y]}'

基本的に、4 番目の列のすべての実行可能な値を追跡します。また、データの 3 列目と 4 列目を追跡します。最後に、各値をチェックして、それらが実現可能かどうかを確認します。

于 2013-06-25T01:21:26.273 に答える