結果

結果

次の内容を含むファイルがあります。

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、2、3、4になります。新しい色で始める必要があるため、ハムスターは1から再起動する必要があります。

そのファイルで「色の動物を同時に読み取る」を実行すると、色が以前の色と同じではなくなったときにどのように比較できますか?

私は次のようなものを探しています:

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は次の4つを追跡します。

  1. 最近読んだ動物の名前、a
  2. 最近読んだ色はc
  3. 「動物カウンター」、ac
  4. 「カラーカウンター」、cc

両方の入力列の内容に基づいてこれらの変数を更新します。

  • 最近読んだ色と色が異なる場合は、増やしてcc覚えておいてください。これ代わりに色を指定します。またリセットしaca
  • 動物が前回読んだものと異なる場合は、追加してac覚えておいてくださいこれ代わりに動物。

次に、入力の各行の合計を印刷しますccac

各行の動物が一意であることを保証する場合は、このa変数を削除できます。

おすすめ記事