Читаю щас про sed учебник здешнего юзера, кстати, emulek'a встретил подозрительный кусок.
Далее sed последовательно читает все три файла, применяя к каждой строке в них sed-скрипт (пустой в данном случае). Результат выводится в выходной поток. Вот тут действие sed заканчивается, и опять начинает работать оболочка, последовательно записывая весь вывод в файл all.html. Потому код cat примитивен (пара строк на C), она просто читает входные файлы и выводит их в выходной поток, без всякой обработки, поисков и слияний. (Правда cat ещё и может нумеровать строки с ключом -n)
http://emulek.github.io/sed/ch01s02.html
Я, почему-то всегда думал, что выполнение происходит параллельно, или, как минимум, построчно. Типа, каждая строка передается по конвейру, а не буферы, куски etc. Может автор чуток ошибся? Или я что-то путаю?