2012-02-13 9 views
-1

行番号2000と3000の間で最小値を探したい。行のタグで入力ファイルの特定の行の最小値と最大値

値の最小値と最大値を探したい。最小値と最大値が見つかった場合は、それが見つかった行も検索する必要があります。 次に、最大または最小を含む行の上の1行に行き、同じ行の6つの整数のうち最初の整数を として出力したいとします。

入力内容は次のとおりです。

*KEYWORD 
$TIME_VALUE = 1.4000002e+001 
$STATE_NO = 15 
$Output for State 15 at time = 14 
*ELEMENT_SHELL_THICKNESS 
1346995  25 1457683 1471891 1457727 1471929 
9.953265e-001 9.953265e-001 9.953265e-001 9.953265e-001 
1346996  25 1471891 1457685 1471930 1457727 
9.953963e-001 9.953963e-001 9.953963e-001 9.953963e-001 
1346997  25 1457685 1471892 1471931 1471930 
9.953437e-001 9.953437e-001 9.953437e-001 9.953437e-001 

ので、出力は

min=9.953265e-001 on line 07 at 1346995 
max=9.953963e-001 on line 09 at 1346996 

PSのようになります。私は、この入力に取り組むためにはなく、配列の最小と最大は私にとって難しいです見つけることができます。 専門家の提案を待っています。

答えて

0

私は行番号2000と3000の間で要件を理解していないドットが、それは行番号6と11の間、あなたの例である場合:

cat your_file | awk ' 
    NR >= 6 && NR <= 11{at=$1;getline 
    if (max < $1){max=$1;max_line=NR;max_at=at} 
    if (min > $1){min=$1;min_line=NR;min_at=at}} 
    NR == 7{min=$1;min_line=NR;min_at=at} 
    END{ 
    printf "min=%-13e on line %02d at %8d\n", min, min_line, min_at 
    printf "max=%-13e on line %02d at %8d\n", max, max_line, max_at}' 

とMAXが9行目ではないでしょうか?

(すべてに、猫は私の役に立たない使用をしてください、私はそれがより明確にこのよう;-)見つける。)

+0

はい、あなたは正しいです、それはライン9、しかし、ライン2000および3000にする必要があります私のコードにありますので、私はあなたがすでに与えている一般化された答えがほしいと思っています。本当に皆さんの素晴らしいサポートに感謝しています。 –

+0

http://stackoverflow.com/users/851677/jfgagne私は私に授与された支援を義務づけられています。 –

+0

http://stackoverflow.com/users/851677/jfgagne FNRの代わりにNRを使用した理由を説明してください。私がスクリプトを書いているのであれば、FNRを使う方が良いのではないでしょうか?異なるファイルが編集されているシェルでは、エラーの可能性はありませんか?あなたは何を言いますか? –

関連する問題