awk:ファイルに自動インクリメントフィールドを追加する

awk:ファイルに自動インクリメントフィールドを追加する

ファイルが与えられると、次のような問題があります

val1 val2 text_0 
val1 val2 text_0 
val1 val2 text_0 
...
val1 val2 text_1 
val1 val2 text_1 
val1 val2 text_1 
...
val1 val2 text_2 
val1 val2 text_2 
val1 val2 text_2 
...

text_新しいタグごとに自動インクリメントがゼロから始まるように、各列に自動インクリメントを追加する必要があります。

val1 val2 text_0_0 
val1 val2 text_0_1 
val1 val2 text_0_2 
...
val1 val2 text_1_0 
val1 val2 text_1_1 
val1 val2 text_1_2 
...

私はAWKに慣れていないので、これを行う方法を見つけることができません。

ベストアンサー1

短いアッ方法:

awk '{ $3=$3"_"a[$3]++ }1' file

おおよその出力:

val1 val2 text_0_0
val1 val2 text_0_1
val1 val2 text_0_2
...  
val1 val2 text_1_0
val1 val2 text_1_1
val1 val2 text_1_2
...  
val1 val2 text_2_0
val1 val2 text_2_1
val1 val2 text_2_2

  • a[$3]++<var>++- postincrement()を介して3番目のフィールド値の発生を計算します。

おすすめ記事