2014-05-21 31 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 

或打印出來的最大使用awk

閔每組

6 
10 
14 
19 
+2

這是什麼邏輯分組的數字? – fedorqui

+0

你的組似乎有4或3個成員,沒有明確的邏輯來決定哪個有4個,其中有3個。我認爲它是「值在1到4之間,在5到8之間等」但第一組在2之間和6 ...(我還以爲「好吧,他想要在N和N + 4之間」,但是那麼N + 4是包含性的,所以它真的是按5個組來組成的?例如:1 2 3 4 5是一組?) –

回答

0

由4分組它

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組數據,第二個得到maxmin

+1

這只是每4行打印一次(從第一行開始,在第二行的第0行(因此第4行)......它與分組或打印最小值無關(除非輸入已排序),並且不對輸入值進行分組(它根據行號打印,而不是行值) –

+0

@OlivierDulac我已更新了我的答案。 – Jotne