awk - 如果通过 bash 脚本包含主函数,则使用类名
问题描述
我正在编写脚本来grep包含多个类的java文件的类名,如果它包含主函数。示例:我的文件包含text.txt
class Parent
{
public void p1()
{
System.out.println("Parent method");
}
}
public class Child extends Parent {
public static void main(String[] args)
{
Child cobj = new Child();
cobj.c1(); //method of Child class
cobj.p1(); //method of Parent class
}
public void c1()
{
System.out.println("Child method");
}
}
输出将是:Child
因为它包含主要功能。我在文件中找到的模式 main 之前分析模式和 grep 两行。我的脚本:
grep -B 2 "public static void main" "text.txt" > sample.txt
filen=$(grep -oP '(?<=class )[^ ]*' sample.txt)
echo $filen
但是如果代码包含以下内容,我的方法就会出错:
class Parent
{
public void p1()
{
System.out.println("Parent method");
}
}
public class Child extends Parent {
public void c1()
{
System.out.println("Child method");
}
public static void main(String[] args)
{
Child cobj = new Child();
cobj.c1(); //method of Child class
cobj.p1(); //method of Parent class
}
}
请帮助我找到正确的方法。
解决方案
请您尝试关注一次。
awk '/public static void main>/{print val} /public class/{val=$3}' Input_file
推荐阅读
- amazon-web-services - 如何在 serverless.yml 的单个条目中指定多个资源?
- c# - 将Word文档转换为HTML而不丢失原始文件
- java - RecyclerView 一开始只显示一个项目,然后只显示三个
- python - 创建我们自己的信号来中断 Python 程序
- spring-data-jpa - 在加载父实体时对子实体应用 JPA 规范
- python - 多个复选框一个提交按钮以多种形式
- r - 加载 .RData 文件后覆盖函数
- cortana - Project Centennial 集成 Cortana 错误 DEP0700
- f# - 是否在某处的标准库中定义了 unit -> unit 的代表?
- c# - 生成动作
将表达式作为字符串