2017-07-27 116 views
1

我有數據集是這樣的:awk的打印數量

1 A 
1 B 
1 C 
2 A 
2 B 
2 C 
3 B 
3 C 

而且我有一個腳本,它計算了我:

  1. 在搜索字符串

  2. 出現次數
  3. 行數

    awk -v search="A" \ 
        'BEGIN{count=0} $2 == search {count++} END{print count "\n" NR}' input 
    

這很好。

我想添加到我的awk從第一列開始的單行數字的唯一行數。

所以輸出應該由分開\ n

2 
8 
3 

我可以在不同的awk代碼做到這一點,但我不能將它集成到我原來的awk代碼。

awk '{a[$1]++}END{for(i in a){print i}}' input | wc -l 

不知道如何在一個awk解決它集成沒有管道?

+1

正確的 - 它是固定的。 8號它來自awk腳本 - NR - 它是所有行的數量。 – Geroge

+0

編號2是第二列「A」(有兩次)的發生次數,編號3是示例 - 唯一的第一列和計算的行數。 – Geroge

回答

4

看起來像你想的:

awk -v search="A" '{a[$1]++} 
        $2 == search {count++} 
        END{OFS="\n";print count+0, NR, length(a)}' file 
+0

作品很有魅力:)謝謝! – Geroge

+0

沒有意識到使用長度(a):) – Geroge

+1

不客氣 – hek2mgl