awkには最小値を求める関数は用意されていません。
なので、自分でコーディングする必要があります。

スポンサーリンク

awkで2フィールド(列)目の最小値を求めるサンプルコード

下記のようにin.txtがあった時に2フィールド(列)目の最小値を求めます。

下記がawkで2フィールド(列)目の最小値を求めるサンプルコードになります。
1行ずつ読み込んで、最小値の更新判定をしています。
最後にENDブロックで最小値を出力しています。

下記が、実行結果になります。
2フィールド(列)目の最小値が2となっているのが確認できます。

スポンサーリンク

サンプルコードの解説:awkを使った最小値の算出ステップ

まずは初期値の設定が必要

awkの特性上、ブロック処理がレコード(行)単位で繰り返し処理されます。
なので、初期化をするか否かの判定処理をする必要があります。

今回は、フラグを使って、最初にレコード(行)を読み込んだ時に初期化を行いました。

まずは、BEGINブロックでフラグをONにしています。

そして、最初のレコード(行)の処理の時に、下記のif文がTRUEとなり、初期化が実行されます。
初期化後は、フラグをOFFにして、初期化以降では初期化されないようにしています。

スポンサーリンク

1レコード(行)ずつ読み込んで最小値を更新

あとは、1レコード(行)ずつ読み込んで最小値を更新していきます。

最後に、ENDブロックで最小値をprint出力

最後に、ENDブロックで最終的に更新された最小値をprint出力します。
ENDブロックは、awkコマンドの一番最後に実行されるブロックになります。

スポンサーリンク