我的文件具有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删除它,但我更希望它位于单行代码中,但我自己无法弄清楚
答案 0 :(得分:0)
稍作改动并使用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
否则进行打印