我可以从这些数据中提取第 n 个“块”吗?

Bri*_*ick -1 scripting sed awk

我有stdout很多看起来像这样的文本块:

% QUESTION
Who played drums for The Beatles?


% QUESTION
Who played
guitar

for The Beatles?


% QUESTION
Who played

bass for The Beatles

?
Run Code Online (Sandbox Code Playgroud)

这里的想法是将文件分成“块”,其中每个块都以 line 开头% QUESTION。我想编写一个脚本来打印此数据的第 n 个块。

例如,发行nthchunk 3应打印

Who played

bass for The Beatles

?
Run Code Online (Sandbox Code Playgroud)

我怎么能去做这件事?

Sté*_*las 6

对于awk支持正则表达式作为其记录分隔符 ( RS)的实现,例如 GNU awk,您可以执行以下操作:

awk -v n=3 -v RS='(\n+|^)% QUESTION\n' 'NR == n+1 {print; exit}' < questions.txt
Run Code Online (Sandbox Code Playgroud)