awk
awk '
/Cat/ {
if (NR>1) print ""
printf "%s", $0
next
}
{printf ",%s", $0}
END {print ""}
' file
Другая версия, которая сильно зависит от переменных awk: (добавлено до того, как я прочитал ваш комментарий о том, что "Cat" должен быть регистронезависимым регулярным выражением)
awk 'BEGIN {RS="Cat"; FS="\n"; OFS=","} NR>1 {$1=RS; NF--; print}' file
Сокеты Unix надежны. Если читающий не читает, пишущий блокирует. Если сокет является дейтаграммным, каждая запись сопровождается чтением. Если сокет является потоковым, ядро может буферизировать некоторые байты между пишущим и читающим, но когда буфер заполнен, пишущий блокируется. Данные никогда не отбрасываются, за исключением буферизованных данных, если читатель закрывает соединение до чтения буфера.