所以,假设我在一段代码中有这样的某种类型的数据结构:
struct apple {
int type, color;
Apple app;
};
// ... more code
我想获取完整的结构定义(以及文件中的任何其他结构定义)并将它们压缩成一行(因此文件产品看起来像这样:
struct apple { int type, color; Apple app; };
).
这是家庭作业的一部分。不到一周前,我刚刚在讲座中学习了 sed,但我不确定如何做这样的事情。因此,如果您对直接回答问题感到不自在,如果您能为我指明正确的方向,以便我可以学习如何正确使用此实用程序,我将不胜感激。
我假设可以通过检测结构定义来使用 sed 完成任务,然后继续将每一行读入全局缓冲区,直到找到 }(我假设结构定义中没有 union 或任何内容).虽然这个程序似乎有很多功能,但我找不到任何关于它的精彩介绍。
最佳答案
我会按照以下方式做一些事情:
$ sed -n '/struct/,/};/p' input | sed -e ':a;N;$!ba;s/\n//g'
struct apple { int type, color; Apple app;};
构造 /foo/,/bar/
选择模式之间的所有行(包括)。
N
命令将换行符和下一行附加到当前模式空间。然后执行著名的 s///
命令,它将换行符替换为空,即行连接。
关于c - 使用 sed 检测和连接多行结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7692359/