Я хочу сделать код латексной таблицы из вывода Unix cal
, например, Это должно выглядеть так:
Mo & Tu & We & Th & Fr \\
& & 1 & 2 & 3 \\
6 & 7 & 8 & 9 & 10 \\
13 & 14 & 15 & 16 & 17 \\
20 & 21 & 22 & 23 & 24 \\
27 & 28 & & & \\
Я придумал следующее решение:
cal | sed -e '1d; /^$/d; s/^\(...\)\?\(...\)\?\(...\)\?\(...\)\?\(...\)\?\(...\)\?.*/\2 \& \3 \& \4 \& \5 \& \6 \\\\/'
Работает как шарм! Но я не уверен, что результат определен. Разве это не было бы правильным поведением, например для первой группы, чтобы соответствовать пустой строке, и для второй группы, чтобы соответствовать первым трем символам любой строки (вместо символов 4-6)? И если нет, был бы какой-то переключатель, чтобы сделать его правильное поведение (чтобы я мог знать, как этого избежать / контролировать поведение)?