2016-02-02 2 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 распечатать результаты после блока. Если вам известен диапазон номеров, вы можете назначить значения вне диапазона для max и min для сброса или, как правило, пустую строку, как указано выше.

Смежные вопросы