awk: adiciona um campo de incremento automático a um arquivo

2

Eu tenho o seguinte problema, dado um arquivo

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 
...

Eu preciso acrescentar um incremento automático em cada coluna text_ , de forma que os incrementos automáticos comecem a partir de 0 em cada novo token, por exemplo

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 
...

Eu não sou proficiente com o AWK, não consegui encontrar uma maneira de fazer isso.

    
por Fuseka 05.07.2017 / 10:58

1 resposta

7

Abordagem curta awk :

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

A saída aproximada:

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]++ - conta a ocorrência do 3º valor de campo via pós-incremento ( <var>++ )
por 05.07.2017 / 11:04

Tags