从文件中打印特定行

Print specific lines from file

我有一个这样的文本文件:

OBJ O1 = {
{P11},
{0}
};

OBJ O2 = {
{P21},
{P22},
{P23},
{0}
};

OBJ O3 = {
{P31},
{P32},
{0}
};

我只想打印以 OBJ O2 开始并在 OBJ O2

之后以第一个 {0} 结束的行
OBJ O2 = {
{P21},
{P22},
{P23},
{0}
};

是否有使用 cat、sed、awk 或 grep 打印这些行的解决方案?

你可以这样做:

awk '/OBJ O2/,/^};$/' file

一个 awk 替代方案(没有范围表达式),cf。 Is a /start/,/end/ range expression ever useful in awk?

awk '/^OBJ O2/{f=1} f{print; if(/};/) f=0}' file