Есть три части шаблона, который вы хотите сопоставить:
Сложив все это вместе, вы получите выражение:
grep '^foo.*bar$' file
В качестве примера рассмотрим этот тестовый файл:
$ cat testfile
foobar
foo bar
foo 123 bar
123 foo bar
foo bar 123
123 foo bar 123
Теперь выполняется команда grep
:
$ grep '^foo.*bar$' testfile
foobar
foo bar
foo 123 bar
Обратите внимание, что вариант, указанный вами в комментариях (grep -e "^foo" -e "bar$" file
), ведет себя иначе:
$ grep -e "^foo" -e "bar$" testfile
foobar
foo bar
foo 123 bar
123 foo bar
foo bar 123
Это связано с тем, что опции -e
сочетаются с операцией ИЛИ. В дополнение к исходным результатам ^foo.*bar$
вы также получите результаты, соответствующие ^foo
, а также результаты, соответствующие bar$
.
В справочной странице нет четкого объяснения того, какие параметры можно использовать с ncal
и какие параметры можно использовать с cal
. Он просто их иллюстрирует. СИНТАКСИС справочной страницы и сообщение об использовании, возвращенное при вводе недопустимой опции, иллюстрируют допустимые комбинации существующих опций и каждой команды, cal
и ncal
--, они не показывают, что -C
используется в сочетании с -M
. потому что эта комбинация недействительна и просто не работает.
Чтобы заставить программу cal
печатать понедельник как первый день недели, введите команду ncal -bM
.