在外壳脚本函数中提取代码

时间:2018-07-11 07:28:45

标签: bash shell sh

我的文件具有20-30多种功能,如下所示:

abc(){
 # code of abc function
}
efg(){
 # code of efg function
}
hij(){
 # code of efg function
}

我想使用grep / sed或任何其他文本处理工具来提取特定功能中存在的代码。


我尝试了这个: sed -n '/efg/,/\}/p' file.txt

输出:

efg(){
     # code of efg function
}

如何排除输出的第一行和最后一行以仅获取代码。我知道可以使用sed删除它,但我更希望它位于单行代码中,但我自己无法弄清楚

1 个答案:

答案 0 :(得分:0)

稍作改动并使用nd就可以完成任务,例如

sed -n '/efg/,/[}]/{/efg/{n};/[}]/{d};p}'

使用/输出示例

$ sed -n '/efg/,/[}]/{/efg/{n};/[}]/{d};p}'
 # code of efg function

注意:仅适用于多行功能,如果愿意,可以转义,例如\}而不是使用字符类[}]

简短摘要

  • -n禁止打印图案空间
  • /efg/,/[}]/,用于efg}之间的所有内容
  • {/efg/{n};如果匹配efg,则匹配下一行
  • /[}]/{d};如果匹配}删除
  • p否则进行打印