ファイルaから角かっこ行を印刷できます。
first
[
third
fourth
]
sixth
[
eighth
]
tenth
することで
% <a sed -n '/\[/,/\]/p'
印刷
[
third
fourth
]
[
eighth
]
しかし、2番目のゲームだけが欲しい場合はどうなりますか?最後の3つですか?
ベストアンサー1
awk
で定義されたブロックがそれ自体ブロックを含まないか、ブロック内にあると仮定すると、使いやすくなります。[
]
[
]
$ awk -v b=2 '/\[/{c++} c==b; /]/ && c==b{exit}' ip.txt
[
eighth
]
-v b=2
どのブロックが必要かを指定する変数/\[/{c++}
行が開始条件と一致した場合のカウンタの増加c==b;
カウンタが必要なブロックと等しい場合は、入力レコードを印刷します。/]/ && c==b{exit}
終了条件が一致した場合
それを書くもう一つの方法:
awk -v b=2 '/\[/{c++} c==b{print $0; if(/]/) exit}' ip.txt