如何使用grep和regex匹配特定长度的单词?

时间:2015-09-24 11:02:50

标签: regex bash grep

我正在使用Linux的终端,并且我有一个单词列表,其中包含以下单词:

filers
filing
filler
filter
finance
funky
fun
finally
futuristic
fantasy
fabulous
fill
fine

我想做一个grep和一个正则表达式来匹配查找单词和前两个字母" fi"并且只显示该单词的总共6个字符。

我试过了:

cat wordlist | grep "^fi" 

这显示以fi开头的单词。

然后我尝试了:

cat wordlist | grep -e "^fi{6}"
cat wordlist | grep -e "^fi{0..6}" 

还有更多,但它没有带回任何结果。有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:4)

它的fi以及另外四个字符:

grep '^fi....$'

或更短

grep '^fi.\{4\}$'

grep -E '^fi.{4}$'

$匹配在行尾。

答案 1 :(得分:2)

试试这个:

grep -P "^fi.{4,}"

请注意,由于您已经拥有“fi”,因此您只需要至少4个字符。

.表示任何字符,{4,}将匹配该字符4次或更多次。

如果您像示例中那样写grep -e "^fi{6}",那么您尝试匹配以f开头的字符串,后跟6 i s。

答案 2 :(得分:2)

<强>解决方案:

cat wordlist | grep -e "^fi.{4}$"

您的尝试:

cat wordlist | grep -e "^fi{6}"

这意味着f和i六次,上面添加的点表示任何字符,所以它是fi和任何字符4次。我还用$来标记该行的结尾。