提问人:BubbleMonster 提问时间:9/24/2015 最后编辑:MarounBubbleMonster 更新时间:9/25/2015 访问量:22776
如何使用 grep 和正则表达式来匹配特定长度的单词?
How can I use grep and regex to match a word with specific length?
问:
我正在使用 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}"
还有很多,但它并没有带来任何结果。谁能为我指出正确的方向?
答:
2赞
Maroun
9/24/2015
#1
试试这个:
grep -P "^fi.{4,}"
请注意,由于您已经有“fi”,因此您只需要至少 4 个字符。
.
表示任何字符,并且要匹配该字符 4 次或更多次。{4,}
如果您像在示例中那样编写,则会尝试匹配以 开头的字符串,后跟 6 秒。grep -e "^fi{6}"
f
i
评论
0赞
BubbleMonster
9/24/2015
感谢您的回答,但是当我在 3 之后加上逗号时,它会向我显示超过 6 个字符的单词。当我删除逗号时,它会给我我正在寻找的单词。
0赞
Maroun
9/24/2015
@BubbleMonster 如果你正好想要 6,那么是的。您需要删除逗号。逗号表示一个范围,删除它将产生确切的结果。
7赞
choroba
9/24/2015
#2
它还有另外四个字符:fi
grep '^fi....$'
或更短
grep '^fi.\{4\}$'
或
grep -E '^fi.{4}$'
$
匹配项在行的末尾。
评论
1赞
stuXnet
9/24/2015
您在上一个正则表达式中忘记了 - 现在它会匹配.
^fiiii$
1赞
choroba
9/24/2015
@stuXnet:谢谢,已修复。
3赞
Zoltan Ersek
9/24/2015
#3
溶液:
cat wordlist | grep -e "^fi.{4}$"
您的尝试:
cat wordlist | grep -e "^fi{6}"
这意味着 f 和 i 六次,上面添加的点表示任何字符,所以它是 fi 和任何字符 4 次。我还加了一个 $ 来标记行的末尾。
评论
0赞
tripleee
9/24/2015
不,这意味着 f 后跟六个实例,如果 i。
上一个:在脚本中提取正则表达式捕获组
评论