A análise de um arquivo de texto no shell é muito lenta e extremamente propensa a erros. Você está executando grep
uma vez por linha no arquivo de entrada e sed
duas vezes para cada linha que contém Count
. Evite fazer isso.
Tanto quanto eu posso ver, isso pode ser substituído por
awk '$1 == "Count" { printf("Count = %d\n", ++i); next } { print }' rand_file1 >rand_file1.new
Isso gera as linhas Count =
com o incremento correto quando atinge uma linha cujo primeiro campo é exatamente Count
e passa todas as outras linhas como estão.
Alternativamente,
awk '$1 == "Count" { $0 = sprintf("Count = %d", ++i) } { print }' rand_file1 >rand_file1.new
que modifica o valor $0
(a linha de entrada) e imprime todas as linhas com um único print
.
Esta última variação pode ser encurtada para
awk '$1 == "Count" { $0 = sprintf("Count = %d", ++i) } 1' rand_file1 >rand_file1.new
Veja também " Por que usar um loop de shell para processar texto considerado uma prática ruim? ".