我想从一本书中摘录包含动词及其不同时态列表的句子。
例如,对于单词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"'
但是该命令无法识别该句子。我尝试了不同的替代方案组合,但没有成功。
您能否建议在正则表达式中使用替代方式,以便我可以在一个命令中检测到不同的时态?
谢谢!
答案 0 :(得分:1)
您需要从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)"