Почему бы просто не сделать цикл while? В развернутом виде:
( while read a
do
read b
read c
echo "$a"
echo "$c"
echo "$b"
done
) < input.txt
В "однострочном формате":
( while read a ; do read b ; read c ; echo "$a" ; echo "$c" ; echo "$b" ; done) < input.txt
Выходы:
gi_1234
I have a cat.
My cat is blue.
gi_5678
I also have a dog.
My dog is orange.