2012-04-11 5 views
2

특정 범위에 AWK와 최대와 최소를 찾아, 내가 awk$3의 최대 및 $2의 분 만 $1의 특정 범위를 얻으려면 :나는 세 개의 열을 가진 파일이

Col1 Col2 Col3 
============== 
X 1 2 
X 3 4 
Y 5 6 
Y 7 8 

일예 최소 값 Col2을 얻고 최대 값은 Col3이고, 값은 Col1=X입니다.

내가 최대 및 최소 값을 처리 할 수 ​​있지만 특정 범위 에서 찾을 방법을 알아 그나마이 내 코드입니다 :

awk ' min=="" || $2 < min {min=$2; minline=$0} $3 > max {max=$3; maxline=$0};END {print $1,min,max}' 

내가 {If ($1==X)}을 추가하려고하지만 그것은 잘 작동 나던.

답변

1

무엇에 대해 :

awk 'BEGIN { c=1 } 
    $1 == "X" { if (c==1) { mmin=$2; mmax=$3 ;c++ } 
       if ($2<mmin) { mmin=$2 } 
       if ($3>mmax) { mmax=$3 } 
    } 
    END { print "X min: " mmin ", max: " mmax }' INPUTFILE 

See it in action @ Ideone.

+0

네,뿐만 아니라 그것 뿐이다을 – user1326177

+0

다음이 http://stackoverflow.com/faq#reputation –

2
kent$ echo "X 1 2 
X 3 4 
Y 5 6 
Y 7 8 
"|awk '$1=="X"{min=$2<min||min==""?$2:min;max=$3>max||max==""?$3:max}END{print min,max}' 
1 4 

원하는 내용은 무엇입니까?

+0

예, 감사를 읽어! :) – user1326177

1

당신은 모든 최소값과 최대 값 수집 할 경우

awk ' 
    $2 < min[$1] {min[$1] = $2} 
    $3 > max[$1] {max[$1] = $3} 
    {col1[$1] = 1} 
    END {for (c in col1) {print c, min[c], max[c]}} 
' file 
관련 문제