2014-05-21 4 views
1

awk를 사용하여 값의 집합을 범위로 그룹화하고 각 범위의 가장 낮은 값을 출력으로 인쇄하는 방법에 대해 도움을 줄 수 있습니까?숫자를 범위에 awk 화하고 하단을 인쇄하는 방법

예제 파일이

2 
3 
4 
6 
7 
8 
10 
12 
13 
14 
16 
18 
19 

이 최소부터 포함, 나는 그룹이 있어야합니다> = 4의 간격으로 그룹화하려는 최소

를 인쇄

f1rst group 
2 
3 
4 
6 

second group 
7 
8 
10 

third group 
12 
13 
14 

fourth group 
16 
18 
19 

출력은 각 그룹의 최소값이어야합니다.

2 
7 
12 
16 
,210

또는 최대에게 awk

최소 4를 이용하여 그룹화 각 그룹

6 
10 
14 
19 
+2

그룹 번호에 대한 논리는 무엇인가 min를 얻을? – fedorqui

+0

그룹에 4 명 또는 3 명으로 구성되어있는 것으로 보입니다. 4 명 중 3 명이있는 그룹을 결정하는 명확한 논리가 없습니다. "1 명에서 4 명 사이, 5 명에서 8 명 사이"라고 생각했지만 첫 번째 그룹은 2 명 그리고 6 ... (나는 또한 "N과 N + 4 사이에서 원하는 ok"라고 생각했다. 그렇지만 N + 4는 포괄적 인 것인가?) 실제로 5의 그룹에 의해? ex : 1 2 3 4 5는 그룹입니까?) –

답변

0

awk 'NR%4==1' file 
2 
7 
13 
19 

를 출력 최대

awk 'NR%4==0' file 
6 
12 
18 

최소값과 최대 값을 얻으려면.

awk 'ORS=NR%4?FS:RS' file | awk '{for (i=1;i<=NF;i++) {min=$i<min||!min?$i:min; max=$i>max||!max?$i:max} print min,max;min=max=0}' 
2 6 
7 12 
13 18 
19 19 

먼저 awk 그룹 데이터, 두 번째는 max

+1

이것은 단지 4 라인마다 출력합니다 (첫 번째 예제에서 첫 번째 라인부터 시작하여 두 번째 라인의 "0"라인 (그러므로 4 번 라인)에서 시작합니다 ... 입력이 정렬되지 않는 한 그룹화하거나 인쇄하는 것과 아무런 관련이 없습니다), 입력 값을 그룹화하지 않습니다 (행의 값이 아닌 행 번호를 기준으로 인쇄합니다). –

+0

@OlivierDulac 답변을 업데이트했습니다. – Jotne

관련 문제