2016-02-02 72 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块打印块后的结果。如果您知道数字的范围,您可以将最大值和最小值的范围值分配给复位,或者更多地分配空白字符串,如上所述。