1

Во-первых, это домашняя работа, и, к сожалению, я должен использовать egrep (а не с -w или чем-то подобным).

Мне нужен мой grep для возврата строк, которые имеют ровно 5 или 6 заглавных букв.

Выполнение egrep [A-Z]{5,6} .filename возвращает 5 и 6 буквенные слова, но, к сожалению, также больше буквенных слов, чем это.

Так я например в этом списке:

ASK
roger ROBERT gulliver
tom THOMAS
JONATHAN moore
MELISSA tenant

Мне нужно, чтобы вернуть только Роберт и Томас.

3 ответа3

3
egrep "^[^A-Z]*[A-Z]{5,6}[^A-Z]*$" .filename
2

Попробуйте с:

egrep '^[A-Z]{5,6}$'

где ^ и $ соответствуют началу и концу строки соответственно.

0

Еще одна версия

а) ограничено 5 или 6 верхними падежами в слове;

б) слово может иметь неограниченный нижний регистр, плюс «-» и апостроф:

c) использует символ края слова \b (нулевой ширины);

Это находит больше, чем ваш список (который вы хотели бы), и следует всем ограничениям, которые вы заявляете. Это может привести к большему, чем вы рассчитывали, так как это также позволяет любое количество строчных букв между заглавными буквами:

"\b [az'-] ([AZ] [az'-]){5,6}\b"

Найдешь:офигенно JET-LI

Джейн ДЕСИЛЬВА

Но не:старый Макдональд

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .