Você poderia usar o lookahead (às vezes chamado de asserção de tamanho zero ) se o mecanismo regex que você está usando suportar, por exemplo usando perl, para combinar e remover sequências não-zero de caracteres de palavra, se e somente se seguido por ,
perl -pe 's/\w+(?=,)//g'
Se você quiser incluir outros caracteres na asserção - como o parêntese direito de término, )
após int c
, você pode adicionar isso como parte de uma lista de caracteres [...]
perl -pe 's/\w+(?=[,)])//g'
Se você também quiser remover qualquer espaço em branco, tente
perl -pe 's/\s*\w+(?=[,)])//g'
Juntando tudo, conseguimos
$ echo 'int foo(int a, void * b, int c);' | perl -pe 's/\s*\w+(?=[,)])//g'
int foo(int, void *, int);
Como as versões mais recentes do sed, o perl pode ser feito para operar nos arquivos 'in-loco', adicionando uma opção de linha de comando -i
.