2015-11-19 97 views
1

我有一個數據集看起來像這樣排:awk中刪除基於重複字段

Input 

Cat 2 1 aa 
Dog 1 0 aa 
Dog 1 2 aa 
Cat 2 7 aa 
Mouse 0 0 aa 
Cat 1 5 
Dog 4 3 
.  . . 
.  . . 
.  . . 
Cat 1 5 
Dog 4 3 
Cat 6 9 bb 
Dog 3 1 bb 
Dog 3 6 bb 
Cat 6 4 bb 
Mouse 0 0 bb 

有了這個數據集我要做到以下幾點:

  • 如果第4欄是空白的,打印行。
  • 如果第4列不爲空,僅打印與第1列和列的每個組合4.

    輸出
    貓2 1 AA
    犬1節0 AA
    鼠標0的記錄的第一次出現0 aa
    Cat 1 5
    狗4 3
    。 。 。
    。 。 。
    。 。 。
    貓1 5
    犬4 3
    第6類4 BB
    狗3 1的bb
    鼠標0 0 BB

注意,這裏: 「貓2 1 AA」 是與第一記錄欄1 =貓和欄4 = aa,因此它被打印。 「cat 1 5 aa」沒有打印,因爲我們已經有了第1欄= cat和第4欄= aa的記錄。

+0

嘗試排序+ uniq的+ AWK的組合..... –

回答

1

使用

awk '$4 == "" || !a[$1,$4]++' input 

結果:

Cat 2 1 aa 
Dog 1 0 aa 
Mouse 0 0 aa 
Cat 1 5 
Dog 4 3 
.  . . 
.  . . 
.  . . 
Cat 1 5 
Dog 4 3 
Cat 6 9 bb 
Dog 3 1 bb 
Mouse 0 0 bb 
+0

你做出一件很容易的!好一個! :) – AnPocArBuile