Note that this uses tr
to remove any carriage-returns (as in "\r\n" from Windows or network programs)
# Print only the block of lines before the first double-newline
cat file.txt | tr -d '\r' | \
awk 'BEGIN {RS="\n\n"} NR==1'
# Print every block of lines after the first double newline
cat file.txt | tr -d '\r' | \
awk 'BEGIN {RS="\n\n"} NR>=2'
And here's a very ugly version of the same using multi-dimensional arrays. Set 'z=' to the index you want to print. In this example, it'll print the second block of lines after the first double-newline. (note that this is removing the empty line using getline)
cat file.txt | tr -d '\r' | \
awk 'BEGIN {i=0; n=0; z=1};
$0 ~ /^$/ { n++; getline; }; { a[n][i]=$0; i++ };
END { for(i in a[z]) print a[z][i] }'