Adicione o número de sequência atrás de uma palavra de dados

1

Minha entrada

cat file 
ABC
ABC
DEF
DEF
ABC
GHI
GHI
DEF

A saída que eu quero

ABC_1 
ABC_2
DEF_1
DEF_2
ABC_3
GHI_1
GHI_2
DEF_3

qualquer um pode ajudar, eu pesquiso bastante, mas ainda não consigo como obter a saída no unix.

    
por heng960407 13.09.2016 / 04:09

2 respostas

7
$ awk '{print $1 "_" ++c[$1]}' file
ABC_1
ABC_2
DEF_1
DEF_2
ABC_3
GHI_1
GHI_2
DEF_3

Os itens acima usam um único comando awk: print $1 "_" ++c[$1] . Isso imprime o primeiro campo, seguido por _ , seguido por uma contagem do número de vezes que o primeiro campo foi visto até agora.

    
por 13.09.2016 / 04:17
2
awk '$0=$0"_"++n[$0]' #comment
    
por 14.09.2016 / 07:39

Tags