Bash 获取两个已定义模式之间的字符串,并以行尾结束

Bash 获取两个已定义模式之间的字符串,并以行尾结束,bash,shell,unix,sed,Bash,Shell,Unix,Sed,被测文件将具有如下文本模式: name1: function(){ }, name2: function(){ }, name3: function(){ }, }, name1: function 在本例中,我需要获得“name1”、“name2”和“name3”。 所以使用了这个bash脚本: v1='},' v2=': function' sed 's/'"$v1"'\(.*\)'"$v2"'/\1/g' test1.js > newfile2 这似乎只有在模式显

被测文件将具有如下文本模式:

name1: function(){

},
 name2: function(){

},
 name3: function(){

}, 
 },
name1: function
在本例中,我需要获得“name1”、“name2”和“name3”。 所以使用了这个bash脚本:

v1='},'
v2=': function'
sed 's/'"$v1"'\(.*\)'"$v2"'/\1/g' test1.js > newfile2
这似乎只有在模式显示为以下情况时才起作用:

 },name1: function 
但是,文本文件当然不是这样格式化的。是这样的:

name1: function(){

},
 name2: function(){

},
 name3: function(){

}, 
 },
name1: function
我应该在正则表达式中添加什么来实现我所需要的? 我不想改变使用
sed

谢谢