$ cat file
-0.716425 -12.8939 -3.3341 -7.38497 -2.62709 3.00437
-6.69861 -13.8853 -5.81095 -7.37465 -0.268193 -5.45344
$ awk '{for (i=1;i<=NF;i++)printf "%s:%s%s",++n,$i,OFS;print""}' file
1:-0.716425 2:-12.8939 3:-3.3341 4:-7.38497 5:-2.62709 6:3.00437
7:-6.69861 8:-13.8853 9:-5.81095 10:-7.37465 11:-0.268193 12:-5.45344
Como funciona
-
for (i=1;i<=NF;i++)printf "%s:%s%s",++n,$i,OFS
Isso faz um loop sobre cada campo em uma linha e imprime com um número prefixado. A variável
n
é o número.++n
incrementan
de um a cada vez que é invocado. -
print""
Isso imprime uma nova linha no final de cada linha.
Para atualizar o arquivo no lugar
awk '{for (i=1;i<=NF;i++)printf "%s:%s%s",++n,$i,OFS;print""}' file >file.tmp && mv file.tmp file
Ou, com as as versões mais recentes do GNU awk (4.1.0 +, no Ubuntu 14.10+ ):
gawk -i inplace '{for (i=1;i<=NF;i++)printf "%s:%s%s",++n,$i,OFS;print""}' file