このデータからn番目の「チャンク」を抽出できますか?

このデータからn番目の「チャンク」を抽出できますか?

stdout次のテキストブロックがたくさんあります。

% QUESTION
Who played drums for The Beatles?


% QUESTION
Who played
guitar

for The Beatles?


% QUESTION
Who played

bass for The Beatles

?

ここでのアイデアは、ファイルが「チャンク」に分割され、各チャンクが1行で始まるということです% QUESTION。このデータのn番目のチャンクを印刷するスクリプトを作成したいと思います。

たとえば、配布はnthchunk 3印刷する必要があります。

Who played

bass for The Beatles

?

どうすればいいですか?

ベストアンサー1

awk正規表現をレコード区切り文字 ( ) としてサポートするRS実装 (例: GNU) では、awk次のことができます。

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

おすすめ記事