По-видимому, вы не можете разобрать вывод BSD cal за текущий день. Это потому, что он подсвечен. Если вы выключаете подсветку с помощью переключателя -h, он будет работать:
➜ ~ cal -h | sed "s/$tmp/$pat/"
Abril 2014
do lu ma mi ju vi sá
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
dd 28 29 30
Чтобы идентифицировать вывод cal, проверьте strace:
strace cal
[...] # tons of lines here
write(1, " 1 2 3 4 5 \n", 23 1 2 3 4 5
) = 23
write(1, " 6 7 8 9 10 11 12 \n", 23 6 7 8 9 10 11 12
) = 23
write(1, "13 14 15 16 17 18 19 \n", 2313 14 15 16 17 18 19
) = 23
write(1, "20 21 22 23 24 25 26 \n", 2320 21 22 23 24 25 26
) = 23
write(1, "\33[7m27\33[27m 28 29 30 \n", 3227 28 29 30
) = 32
write(1, " \n", 23
) = 23
exit_group(0) = ?