Bash 在shell脚本函数中提取代码
我有一个包含20-30多种功能的文件,如下所示:Bash 在shell脚本函数中提取代码,bash,shell,sh,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 } 如何排除输出的第一行
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删除它,但我更希望它是在一行程序中,但我自己也无法通过稍微的变化来理解它,并且使用
n
和d
可以完成任务,例如
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
键入func_name | sed 1d
。使用compgen-A函数
获取脚本源代码后的函数列表。@codeforester的注释应该是正确的答案MacOS:sed:1:“/efg/,/[}]/{/efg/{n};/[…”:n命令末尾的额外字符