Obtenir une chaîne entre 2 modèles définis avec une fin de ligne

Le fichier sous test aura des modèles de texte comme ceci:

name1: function(){ }, name2: function(){ }, name3: function(){ }, 

Je dois obtenir “name1” “name2” et “name3” dans cet exemple. Donc utilisé ce script bash:

 v1='},' v2=': function' sed 's/'"$v1"'\(.*\)'"$v2"'/\1/g' test1.js > newfile2 

Cela semble fonctionner uniquement si le motif apparaît comme:

  },name1: function 

Mais bien sûr, le fichier texte n’est pas formaté de cette façon. C’est comme ça:

  }, name1: function 

Que devrais-je append à la regex qui accomplirait ce dont j’ai besoin? Je ne veux pas changer de sed

Merci

 sed -n 's/\s*\([^: ]*\): function.*/\1/p' test1.js 
 grep function your_file|awk -F":" '{print $1}'