ファイルの12間隔ごとにファイルの5番目の列の最小値を見つけて、その行を新しいファイルに保存したいと思います。
使用可能な最後の12行の最小値を見つけるには
tail -n 12 $FILEname | sort -g -k 5,5 | head -1| awk '{print}'> tmp.out
しかし、どのようにこれらのプロセスを繰り返し実行できますか?頑張りました
while read $FILEname
do
....
done
しかし、これは成功しませんでした。
ファイルは次のとおりです
4.7 0.17 0.529 0 4.4846
4.7 0.17 0.529 1 4.5437474
4.7 0.17 0.529 2 5.63229739
4.7 0.17 0.529 3 4.672385157
4.7 0.17 0.529 4 4.698922468
4.7 0.17 0.529 5 4.699977195
4.7 0.17 0.529 6 4.699969329
4.7 0.17 0.529 7 3.69999717
4.7 0.17 0.529 8 4.6999998
4.7 0.17 0.529 9 2.7
4.7 0.17 0.59 10 3.9999998
4.7 0.17 0.59 11 4.69999999998
5 1 0.59 0 4.49569846
5 1 0.59 1 4.54330574
5 1 0.59 2 4.63739653
5 1 0.59 3 3.67233957
5 1 0.59 4 4.6989202468
5 1 0.59 5 4.699912595
5 1 0.59 6 4.6999329
5 1 0.59 7 4.69999999717
5 1 0.59 8 4.69999998
5 1 0.59 9 3.2547
5 1 0.529 10 4.69999999998
5 1 0.529 11 4.69999999998
約2000行があります。
答え1
努力する
awk 'NR%12 == 1 { min=$5 ; line=$0; }
{ if ($5 < min) { min=$5 ;line=$0; } }
NR%12 == 0 { print line ;}
END { if (NR%12) print line ;} '
これはデフォルトで12行(1、13、25、...)ごとにminをリセットし、minを計算し、12、24、36行を印刷します。
行数が12の倍数ではない場合、ENDステートメントは最後の1分を印刷します。
このステートメントを1行で記述し、次のようにして呼び出すことができます。
awk '....' input_file.txt