Você pode fazer isso facilmente com awk
:
awk 'BEGIN{n=1}; /\/\//{$0=$0 " Text " n; n+=1}; {print}' infile
Se infile
contiver
//
abcdefghijklmnopqrst
//
abcdefghijklmnopqrst
//
abcdefghijklmnopqrst
O comando acima imprime
// Text 1
abcdefghijklmnopqrst
// Text 2
abcdefghijklmnopqrst
// Text 3
abcdefghijklmnopqrst
O /\/\//
de aparência críptica é um regex ( Reg
ular Ex
pression) contendo //
. Em regexes awk são delimitados pela barra invertida /
; para colocar barras em um regex, você precisa escapar com a barra invertida \
.
No awk, padrão { ação } diz executar ação se a linha atual corresponder ao padrão . O padrão BEGIN
é um padrão especial para indicar as ações que queremos que aconteçam antes que as linhas sejam lidas. Se não especificarmos um padrão, a ação será executada para todas as linhas (embora haja uma maneira de sobrescrever isso).
Esta versão atualizada funcionará em seu novo arquivo de entrada, mas infelizmente não preservará o espaçamento
awk 'BEGIN{n=1}; /^\/\//{$1=$1 " Text " n; n+=1}; {print}' infile
entrada
// x x
abcdefghijklmnopqrst
// x x
abcdefghijklmnopqrst
// x x
abcdefghijklmnopqrst
saída
// Text 1 x x
abcdefghijklmnopqrst
// Text 2 x x
abcdefghijklmnopqrst
// Text 3 x x
abcdefghijklmnopqrst