Aqui está uma possível solução com nossos amigos grep
e sed
. Isso é bom para arquivos pequenos, caso contrário, uma solução perl
(ou awk
?) Terá muito mais desempenho.
Esta é a sintaxe bash
:
i=1
maxnum=$(grep -o '\<word\>' datafile | wc -l)
while (( i <= maxnum )); do
sed -i "s/word/$i/" datafile
(( i++ ))
done
grep -o
conta o número total de palavra em datafile
. Isso é de Glenn .
O único truque aqui é que sed
não está funcionando globalmente, substituindo apenas a primeira string correspondente. É por isso que esse código é tão lento, pois invoca sed
maxnum vezes em todo o arquivo de dados.
Esteja ciente de que sed -i
altera seu arquivo de dados original, portanto, faça uma cópia primeiro.