2012-06-05 103 views
0

我想根據column2的值提取column1。我想打印列1的值只有當列2是≤30且大於5.用awk從多個文本文件中提取列

我還需要根據輸出打印column1的值的總數。我怎樣才能用awk從多個文本文件中做到這一點?

文本文件示例如下所示。

col1 col2 

aa  25 
bb  4 
cc  6 
dd  23 
aa  30 

輸出將

aa 
cc 
dd 
aa 

Total number of aa is 2 
Total number of cc is 1 
Total number of dd is 1 
+0

一如往常,請發表你已經嘗試了什麼到目前爲止... –

回答

3

像這樣的事情,讓你開始:

{ if ($2 <= 30 && $2 > 5) { 
    print $1 
    tot[$1] += 1 } 
} 
END { 

    for (i in tot) { 
    print "Total number of", i, "is", tot[i] 
    } 
} 

輸出:

$ awk -f i.awk input 
aa 
cc 
dd 
aa 
Total number of aa is 2 
Total number of cc is 1 
Total number of dd is 1 
+0

+1 - 你也可以這樣做:' $ 2> 5 && $ 2 <= 30 {print $ 1; TOT [$ 1] ++}'。更改是將下限置於上限的左邊,使用條件作爲塊選擇器而不是使用「if」,並使用後增量而不是「+ ='。 –

+0

來自我的awk-heroes之一的良好反饋:-) –

+0

謝謝你的回答。 – mohamed

相關問題