给定一个txt文件,如何使用grep查找包含使用正则表达式至少5次相同元音的行?
我试过了:
egrep '[aeiou]{5,}\1' file
但它不起作用。
答案 0 :(得分:2)
对于看起来像这样的测试文件
aeiou
a1a2a3a4a5
e1e2e3e4e5
aaa
我们要匹配第二行和第三行,您可以使用
$ grep -E '([aeiou]).*(\1.*){4}' infile
a1a2a3a4a5
e1e2e3e4e5
这匹配并捕获任何一个元音,然后查找相同元音的四倍,用可选字符填充。
答案 1 :(得分:1)
使用GNU grep:
要找到至少相同元音5倍的单词:
grep -Eo '\b\w*((a\w*){5,}|(e\w*){5,}|(i\w*){5,}|(o\w*){5,}|(u\w*){5,})\b' file
答案 2 :(得分:1)
一个想法是匹配 a 元音后跟anything
并期望此模式至少5次。因此,仅对于a
,那将是:
egrep '(a.*){5,}' $FILE
使用|
字符为每个元音重复此操作,例如:
egrep '(a.*){5,}|(e.*){5,} <and so on>' $FILE
可能有更好的解决方案,例如压缩所有这些管道(|
),但我现在想不到。