Cxms, доктор сказал в морг, значит в морг
sed или grep(по дефолту) будут выдавать абзац в котором что-то найдено. По этому берём grep -o. Ключ E нужен чтобы заставить его искать по регулярке. Применяется конвеер. Что имеем? Яндекс выдаёт не только что идёт по этому каналу, но и передачи канала(дубликаты). Первый grep вырезает только программу. Именно по этому в текущем виде не выводит название канала. Его нужно выводить отдельно. И убрать поиск из второго grep. Почему логическое или? Grep "пропускает" только то что соответствует регулярке. Если искать только название, то мы потеряем время. Далее я немного правлю sed чтобы цифры не прилипали к названию передачи. Далее я удаляю теги.
Недостатки:
* не выводится название канала
(решение отдельная команда)
* несколько табуляций подряд
(замена нескольких табуляций на одну и если перед этим не идёт время, то замена на перенос строки)
Черновой вариант
grep -oE '<div class="b-tv-channel-schedule b-tv-channel-schedule_size_l">(.*)</div>' text | grep -oE '<h1 class="b-content__title b-content__title_page_channels">(.*)<div class="b-tv-channel-content__buttons">|<span class="tv-event__time-text">[0-9]{2}:[0-9]{2}</span>|<div class="tv-event__title"><div class="tv-event__title-inner">(.*)</div></div>' | sed 's/>/>\t/g' | sed -e :a -e 's/<[^>]*>//g;/</N;//ba'