2016-02-02 75 views
0

分離有了這樣的文件記錄:查找最小值和最大值由字符串AWK

line0 200  1500 
line1 750  1000 
line2 600  1700 
line3 150  1100 
line4 400  1800 
line5 100  1900 
line6 950  1200 
line7 250  1400 

...我發現在第二列和最小值在第三列這個腳本的最大值:
awk '{if(min==""){min=$2;max=$3};if($3>max){max=$3};if($2< min){min=$2}} END {print min,max}' file

我會做同樣的事情,但現在每個組由「YYYY」和「XXXX」在同一文件中分割線的欣賞幫助,如下所示:

YYYY 
line0 200  1500 
line1 750  1000 
line2 600  1700 
line3 150  1100 
line4 400  1800 
line5 100  1900 
XXXX 
YYYY 
line6 950  1200 
line7 250  1400 
line8 200  2500 
line9 350  2000 
XXXX 
YYYY 
line10 500  2700 
line11 50  2100 
line12 300  2800 
line13 700  2900 
line14 400  2200 
line15 300  2400 
XXXX 

所需的輸出將是:

100 1900 
200 2500 
50 2900 

回答

0

awk來救援!

$ awk '/XXXX/{print min, max;min=max=""} 
    min==""||$2<min{min=$2} 
    max==""||$3>max{max=$3}' file 

100 1900 
200 2500 
50 2900 

而不是END塊打印塊後的結果。如果您知道數字的範圍,您可以將最大值和最小值的範圍值分配給復位,或者更多地分配空白字符串,如上所述。