2017-05-26 19 views
0

一番小さい値の行の位置を出力する方法は?ファイル内の最小値の位置を見つける方法は?

私は以下のようなデータを含むファイルがあります:

2233|charles harris |g.m.  |sales  |12/12/52| 90000 
9876|bill johnson |director |production|03/12/50|130000 
5678|robert dylan |d.g.m. |marketing |04/19/43| 85000 
2365|john woodcock |director |personnel |05/11/47|120000 
5423|barry wood  |chairman |admin  |08/30/56|160000 
1006|gordon lightfoot|director |sales  |09/03/38|140000 

私はあなただけ取得するためには、このコマンドを使用することができ、最後の列から最小値を見つけ、その位置

+1

何か試しましたか? Stackoverflowは無料のコーディングサービスではありません。私たちは*あなたがコードを書くのを手伝っているので、あなたが試したことを説明したり、コード内の次の/最初のステップを踏むのに役立つ特定の質問をする必要があります。 – kaylum

+0

これは簡単な 'awk'エクササイズでなければなりません。 2つの変数、これまでに見た最低値、見つかった行番号を保持します。最初の変数よりも低い値を取得するたびに、現在の行から2つの変数を更新します。最後に、2つの変数を出力します。 – Barmar

+0

あるいは、 'cat -n'を' head -1'にパイプして 'awk'にパイプしてソートしてください。ファイルがfoo.txtの場合の例: 'cat -n foo.txt |ソート-t \ | -n -k 6,6 | | awk '{print $ 1}' 'と書いてあります。 awkを削除して、元の行番号の前にある完全な行を表示するか、awkを調整して行番号のない行だけを表示してください。 – Deathgrip

答えて

1

を返却する必要があるが値が示されている行番号(値が複数回表示された場合、それはいくつかの行番号を与える):最低VALUの行を見るために

var=$(cut -d "|" -f 6 filename|sort -nr|tail -n1|grep -w -n -f /dev/stdin filename|awk -F ":" '{print $1}');cut -d "|" -f 6 filename |grep -w -n $var filename|awk -F ":" '{print $1}' 

eとその行番号です:

var=$(cut -d "|" -f 6 filename|sort -nr|tail -n1|grep -w -n -f /dev/stdin filename|awk -F ":" '{print $1}');cut -d "|" -f 6 filename |grep -w -n $var filename 
+0

ありがとう、それは動作します:) – NotAWizzard

関連する問題