結果

結果

我有一個包含以下內容的文件:

red dog  
red cat  
red bird  
red horse  
blue hamster  
blue monkey  
blue lion  
pink pony  
pink whale  
pink pig  
pink dolphin 

我需要為每種顏色增加一個計數器,然後為每種動物增加一個計數器。所以紅色是1,藍色是2,粉紅色是3。 。

如果我對所述文件執行“同時讀取顏色動物”,當顏色不再等於以前的顏色時,我可以做什麼來比較?

我正在尋找這樣的東西:

1.1  
1.2  
1.3  
1.4  
2.1  
2.2  
2.3  
3.1  
3.2  
3.3  
3.4  

任何建議將不勝感激 :)

答案1

像這樣的東西awk

$ awk '$1 != c { cc++; c=$1; ac=0; a="" } $2 != a { ac++; a=$2 } { printf("%d.%d\n", cc, ac) }' file
1.1
1.2
1.3
1.4
2.1
2.2
2.3
3.1
3.2
3.3
3.4

awk腳本跟踪四件事:

  1. 最近讀過的動物名稱,a
  2. 最近讀取的顏色,c
  3. “動物計數器”,ac
  4. “顏色計數器”,cc

它根據兩列輸入中的內容更新這些變數。

  • 如果顏色與最近讀取的顏色不同,請增加cc並記住顏色代替。也重置aca
  • 如果動物與最近讀到的不同,則增加ac並記住動物代替。

然後為每行輸入列印cc和。ac

如果保證每一行上的動物都是唯一的,則可以消除該a變數。

答案2

perl -pale '$_ = join ".", reverse ++$h{$F[0]}, scalar keys %h'

哈希%h保存keyA => countscalar keys %h傳回任意時間點的鍵數。然後我們反轉結果並用逗號將它們連接起來。

結果

1.1
1.2
1.3
1.4
2.1
2.2
2.3
3.1
3.2
3.3
3.4

相關內容