Mais fácil fazer com awk , supondo que os blocos definidos por [ e ] não contenham [ ou ] dentro do bloco
$ awk -v b=2 '/\[/{c++} c==b; /]/ && c==b{exit}' ip.txt
[
eighth
]
-
-v b=2variable para especificar qual bloco é necessário -
/\[/{c++}contador de incremento se a linha corresponder à condição inicial -
c==b;imprime o registro de entrada se o contador for igual ao bloco necessário -
/]/ && c==b{exit}exit na condição final correspondente
outra maneira de escrever isso:
awk -v b=2 '/\[/{c++} c==b{print $0; if(/]/) exit}' ip.txt