Não tenho certeza se isso é exatamente o que você quer (você ainda não forneceu os exemplos requestd), mas aqui está uma tentativa de resolvê-lo com um pequeno script Python. Ele lê os dados da entrada padrão e os imprime na saída padrão, inserindo um número de índice em notação hexadecimal em cada linha que começa com "INIT":
#! /usr/bin/env python3
import sys
i = 0 if len(sys.argv) == 1 else int(sys.argv[1])
while True:
line = sys.stdin.readline()
if not line:
break
if line.startswith("INIT "):
print(line[:5] + hex(i)[2:] + line[4:], end="")
i += 1
else:
print(line, end="")
Salvei o script acima como numberinit.py
e tornei-o executável usando chmod +x numberinit.py
.
Você deve executá-lo de uma destas duas maneiras:
./numberinit.py < INPUTFILE
./numberinit.py STARTINDEX < INPUTFILE
INPUTFILE
é o arquivo que você deseja ler e o parâmetro opcional STARTINDEX
permite especificar o primeiro índice a ser usado, o padrão é 0.
Exemplo de uso:
$ cat example.txt
my input file
INIT first
INIT second
stuff in between
INIT third
INIT something longer as fourth
$ ./numberinit.py < example.txt
my input file
INIT 0 first
INIT 1 second
stuff in between
INIT 2 third
INIT 3 something longer as fourth
$ ./numberinit.py 42 < example.txt
my input file
INIT 2a first
INIT 2b second
stuff in between
INIT 2c third
INIT 2d something longer as fourth
Você pode, naturalmente, redirecionar a saída do comando para salvá-lo em um arquivo diferente, mas não use o mesmo arquivo de entrada e saída (truncará o arquivo devido ao modo como o shell lida com redirecionamentos):
./numberinit.py < input.txt > output.txt