Os principais problemas aqui são o uso das notações abreviadas \w e \s . Se o editor é a implementação tradicional de vi (fontes originais de Bill Joy), então também é possível definir a opção magic que é configurada por padrão na maioria das implementações modernas de vi . Isso é feito com :set magic .
vi não entende \w e \s e notação abreviada similar para várias classes de caracteres como vim faz.
Para fazer sua substituição em vi , use
:%s/^\(group[ ][ ]*\)[0-9A-Za-z_]/Test/
De acordo com a documentação vim , \w corresponde a [0-9A-Za-z_] e \s é um espaço ou uma tabulação (há um espaço e uma tabulação em [ ] acima).
O padrão E+ , em que E é alguma expressão, pode ser substituído por EE* .
O na parte de substituição da substituição deve estar funcionando em vi (qualquer vi ). Se isso não acontecer, tente nvi ("new vi ") ou veja se você consegue instalar vim .
O original vi (empacotado como traditional-vi em pelo menos alguns sistemas BSD) precisa ter seus "caracteres especiais" (exceto ^ e $ ) escapados, como \* e \. etc Como alternativa, você pode definir a opção magic com :set magic (normalmente, esse é o padrão nas implementações vi modernas).
A substituição acima substituiria todas as ocorrências de (por exemplo)
group 1
com
group Test
Outra maneira de fazer a mesma coisa que você tentou:
:g/^group/s/[0-9A-Za-z_]$/Test/
ou apenas
:g/^group/s/.$/Test/
se você não precisa ser muito cuidadoso com o último personagem na linha.
Se você quisesse substituir a última palavra (não apenas o último caractere) na linha:
:g/^group/s/[^ ]*$/Test/
No tradicional vi sem a opção magic definida, isso pode ter que ser escrito
:g/^group/s/\[^ ]\*$/Test/