Использование bash для извлечения предложений, содержащих разные времена конкретного глагола - PullRequest
0 голосов
/ 20 января 2019

Я хочу извлечь предложения из книги, содержащей список глаголов и их различные времена.

Например, для слова embellish я хочу, чтобы моя программа могла распознавать не только embellish, но также embellishing, embellishes и embellished.Вот что я сделал в bash:

word="embelish"
echo "It was embellished ..." | grep -E "${word}""ed"

Это может легко распознать предложение It was embellished ....Я хочу использовать альтернативы в bash, как показано ниже, для распознавания различных времен:

echo "It was embellished ..." | grep -E '"${word}""ed"|"${word}""es"'

Однако команде не удалось распознать предложение.Я пробовал разные комбинации альтернатив, но безуспешно.

Не могли бы вы предложить, как использовать альтернативы в регулярном выражении, чтобы я мог определять разные времена в одной команде?

Спасибо!

1 Ответ

0 голосов
/ 20 января 2019

Вам необходимо удалить все двойные кавычки из аргумента grep, а затем заменить одинарные на двойные кавычки.Это потому, что переменные не раскрываются в одинарных кавычках.На самом деле, все между одинарными кавычками воспринимается буквально.Таким образом, когда вы пишете

echo "It was embellished ..." | grep -E '"${word}""ed"|"${word}""es"'

Вы ищете буквенную строку

"${word}""ed"|"${word}""es"

Если вместо этого вы пишете

echo "It was embellished ..." | grep -E "${word}ed|${word}es"

, то переменная wordразвернуто, и вы ищете либо embellished, либо embellishes.

. Кстати: Вы можете сохранить набор текста, сгруппировав окончание ed, es и т. д.

echo "It was embellished ..." | grep -E "$word(ed|es|ing)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...