Como posso acrescentar uma contagem incremental a cada linha de um arquivo de texto?

2

Eu tenho um documento grande com mais de 500 mil linhas como esta

car
milk
dog

E eu quero contar cada linha e adicionar o número no final da linha e o documento final para ficar assim

car1
milk1
dog1
car2    
milk2
dog2
car3
milk3
dog3

ou assim. Não importa a ordem das linhas de saída

car1
car2
car3
milk1
milk2
milk3
dog1
dog2
dog3

E eu criei um script para isso

for (( i=0; i<=999; i++))
do
awk '{ print $1 '$i' }' inputfile >> outputfile
done

Mas o script funciona apenas com arquivos pequenos e não sei por quê.

    
por antiks 04.10.2015 / 16:11

1 resposta

1

Para repetir todo o arquivo n vezes com um sufixo numérico de 1 a n adicionado em cada repetição:

n=999
i=1
while [ "$i" -le "$n" ]; do
  sed "s/\$/$i/" <inputfile
  i=$((i+1))
done >outputfile

Para repetir cada linha n vezes com um sufixo numérico de 1 a n :

awk -v n=999 '{for (i=1; i<=n; i++) print $0 i}' <inputfile >outputfile
    
por 05.10.2015 / 01:28