回答:
これは動作するはずです:
awk -v max=0 '{if($1>max){want=$2; max=$1}}END{print want} ' version.log
-v max=0
セット変数max
には0
、次いで、ライン毎に、最初のフィールドは、現在の値と比較されますmax
。大きい場合max
、1番目のフィールドの値にwant
設定され、現在の行に設定されます。プログラムがファイル全体を処理すると、現在の値want
が出力されます。
編集
私はawk
以前にソリューションをテストしませんでしたが、それを提供したのは本当に悪いことでした。とにかく、回答の編集されたバージョンが機能するはずです(修正してくれてありがとう)、以下もテストしました。
sort -nrk1,1 filename | head -1 | cut -d ' ' -f3
私はsort
最初の分野で活動しています。
さて、ソート後、出力をパイピングし、最初の結果を取得するだけで、結果のcolumn1の数値が最高値になります。
さて、最後にcut
スペースとして指定された区切り文字でパイプし-f3
、意図した出力を出力します。
テスト中
cat filename
112030 /opt/oracle/app/oracle/product/11.2.0
121010 /opt/oracle/app/oracle/product/12.1.0
2312 /hello/some/other/path
3423232 /this/is/really/big/number
342 /ok/not/the/maximum/number
9999899 /Max/number
9767 /average/number
さて、上記の入力に対して上記のコマンドを実行した後、次のように出力を取得します。
/Max/number
単純にsort
コマンドを使用してソートできます
sort -r version.log | head -n1 | awk '{print $2}'
出力:
/opt/oracle/app/oracle/product/12.1.0
cat
。sortは入力ファイルを直接取得できます。