Regex grep命令查找由X或更少字符分隔的2个模式

Regex grep命令查找由X或更少字符分隔的2个模式,regex,grep,Regex,Grep,我正在寻找一个使用egrep的命令,该命令可以在一个文件夹中找到包含两个特定模式的所有文件(第一个模式是tata,第二个模式是tututu),由“最大距离”(以字符数度量,例如任何字符的50个或更少)。类似这样的事情可能很接近: egrep -ri "tata[.]*tutu" /folder/ 但是我不知道如何限制我感兴趣的两种字符串模式之间的字符数。试试看 egrep -ri "tata.{,50}tutu" /folder/ 发件人: {m,n}。。。与前面的元素至

我正在寻找一个使用egrep的命令,该命令可以在一个文件夹中找到包含两个特定模式的所有文件(第一个模式是
tata
,第二个模式是
tututu
),由“最大距离”(以字符数度量,例如任何字符的50个或更少)。类似这样的事情可能很接近:

egrep -ri "tata[.]*tutu" /folder/
但是我不知道如何限制我感兴趣的两种字符串模式之间的字符数。

试试看

egrep -ri "tata.{,50}tutu" /folder/
发件人:

{m,n}。。。与前面的元素至少匹配m次,但不超过n次。例如,{3,5}只匹配“aaa”、“aaaa”和“aaaa”。这在一些旧的regexp实例中找不到。BRE模式需要{m,n}

所以
{,50}
意味着给定模式的50倍或更少

egrep -ri "tata.{,50}tutu" /folder/
发件人:

{m,n}。。。与前面的元素至少匹配m次,但不超过n次。例如,{3,5}只匹配“aaa”、“aaaa”和“aaaa”。这在一些旧的regexp实例中找不到。BRE模式需要{m,n}


因此,
{,50}
表示给定模式的50倍或更少

这些单词可以出现在不同的行或同一行上吗?尝试中围绕点的括号将其从正则表达式“任意字符”更改为文字点(一个包含此字符而不包含其他字符的字符类)。为了匹配重复的任意字符,正则表达式是
*
(点星,其中星号表示前面表达式的零次或多次重复)。亲爱的anubhava,这些单词可能出现在两行不同的行上。亲爱的tripleee,你是对的,一开始,我有[A-Za-z'-]*,但我认为有了“.”会更容易,但我没有意识到它需要没有[]。所以这将使它成为egrep-ri“tata.*tutu”/folder/。但我如何将零次或多次重复更改为50次或更少?为什么
-I
?tAtA是否也应该匹配?亲爱的Benjamin W,是的,它应该不区分大小写;那么-i命令。这些单词可以出现在不同的行或同一行吗?在您的尝试中,点周围的括号将其从正则表达式“any character”更改为literal dot(一个包含此字符而不包含其他字符的字符类)。为了匹配重复的任意字符,正则表达式是
*
(点星,其中星号表示前面表达式的零次或多次重复)。亲爱的anubhava,这些单词可能出现在两行不同的行上。亲爱的tripleee,你是对的,一开始,我有[A-Za-z'-]*,但我认为有了“.”会更容易,但我没有意识到它需要没有[]。所以这将使它成为egrep-ri“tata.*tutu”/folder/。但我如何将零次或多次重复更改为50次或更少?为什么
-I
?tAtA是否也应该匹配?亲爱的Benjamin W,是的,它应该不区分大小写;所以-i命令。亲爱的Entimon,这很好用。尽管我需要它跨多条线工作。所以我添加了-z选项,以在行尾抑制新行,它似乎工作正常。因此,这使它白鹭里兹“塔塔{,50}图图”,它可能是可以改进的。谢谢大家亲爱的恩蒂蒙,这很好用。尽管我需要它跨多条线工作。所以我添加了-z选项,以在行尾抑制新行,它似乎工作正常。因此,这使它白鹭里兹“塔塔{,50}图图”,它可能是可以改进的。谢谢大家