我有一个包含多个类声明的头文件(所有类都以BusType开头)...如何解析每个类并将其输出到自己的文本文件中?
class BusTypeA
{
struct DummyA
{
//etc
};
//etc
};
class BusTypeB
{
struct DummyB
{
//etc
};
//etc
};
class BusType1
{
struct Dummy1
{
//etc
};
//etc
};
//many more classes...
也许对文件进行第一次传递,将所有BusTypes收集到变量中并在for循环中执行类似的操作?
sed -n '/class BusTypeA/,/class BusTypeB/ p' >> BusTypeA.txt
sed -n '/class BusTypeB/,/class BusType1/ p' >> BusTypeB.txt
...
答案 0 :(得分:4)
您可以试试awk
:
awk '/^class/{f=$2;p=1} p&&/^};/{print>>f;p=0} p{print>>f}' file
正如@ hek2mgl的评论所示,
awk '/^class/{f=$2;p=1} p&&/^};/{print>>f;close(f);p=0} p{print>>f;close(f);}'
答案 1 :(得分:3)
尝试csplit
:
csplit input.txt '/^class BusType.*/' {*}
c 内容拆分实用程序。您可以定义正则表达式模式和应该进行的拆分次数 - {*}
表示无限制
答案 2 :(得分:1)
另一个awk
$ awk -v RS= '{print > $2".txt"}' file
取决于分隔类定义的空行。将awk
设置为段落模式,将当前记录打印到以第二个字段命名的文件(加后缀)。