ファイルから特定の要素を抽出する方法

ファイルから特定の要素を抽出する方法

次のスナップショットを含むファイルがあります。

Name    age  class
John    12   3
Mark    10   1
Philip  15   6

列間の区切り文字は複数の空白です。

クラスカテゴリーで最高の数字を印刷したいです。

希望の結果を得る方法を教えてください。

答え1

awk 'NR > 1 && (max == "" || $NF > max) { max = $NF } END { print max }' file

これにより、ファイルを読み取り、最初の行(ヘッダー行)を除くすべての行の最後のフィールドに以前に見た値より大きい数値があるたびに、その値が変数に記憶されますmax。以前に記憶された値がない場合、この値も記憶されます。

最後に、max変数の値が印刷されます。これは、すべての行(最初の行を除く)の最後のフィールドに表示される最大値です。

これはclass、列が常に各行の終わりにあると仮定します。

特殊変数NFNRは、それぞれ現在のレコードのフィールド数とこれまでに読み込んだレコードの数です。値は$NF現在のレコードの最後のフィールド値です。

最後の列の最大数を含む行全体を取得するには、上記のコードを少し変更して関連データを記憶して印刷します。

awk 'NR > 1 && (max == "" || $NF > max) { max = $NF; line = $0 } END { print line }' file

答え2

sortこの機能は、主な位置を定義することによって達成されます。次のことを試すことができます。

sort --key=3 file

関連情報