$ grep -o '\<b[a-z]*ch[a-z]*' file
При этом будут извлечены все слова, начинающиеся с b
и содержащие ch
. Два [a-z] *
будут соответствовать любому количеству строчных букв. \ <
гарантирует, что b
будет первой буквой в слове.
Параметр -o
для grep
заставит его возвращать только согласованную строку, а не всю строку.
Альтернатива:
$ grep -o '\<b[[:lower:]]*ch[[:lower:]]*' file
Ваш шаблон, ^ s. * Ch
будет соответствовать любой строке , которая начинается с s
и содержит ch
] где-нибудь еще на той же строке.
Если lib
используется как projA
и projB
Я бы сделал его отдельным репозиторием git, чтобы обрабатывать только изменения lib
, сохраняя свою историю независимо от чего-либо еще.
Затем в projA
и projB
вам нужно будет каким-то образом включить lib
, но это в основном будет зависеть от того, как разрабатываются и развертываются проекты.