Причина, по которой он возвращает только первое совпадение с датой окончания, заключается в том, что диапазон варьируется от первого совпадения первого шаблона до первого совпадения второго шаблона (включительно) и затем прекратит печать до появления первого шаблона. снова. Если у вас нет проблем с написанием второго паттерна три раза, вы можете использовать
sed -ne '/^2009-08-20/,/^2009-08-26/{/^2009-08-26/!p};/^2009-08-26/p'
, которая будет печатать строку, если она находится между датой начала (включительно) и датой окончания (исключая) - вот что! или если он начинается с даты окончания.