Regex Grep正则表达式重叠匹配

Regex Grep正则表达式重叠匹配,regex,bash,awk,sed,grep,Regex,Bash,Awk,Sed,Grep,给定字符串:lolool 当我尝试查找lol的数量时,Grep不会重叠匹配 echo“lolool”| grep-o'lol'| wc-l 上面的代码段返回3。事实上,我想要的答案是有6个lol。对于这种情况,我知道我可以简单地对lo进行grep,但是这个示例旨在表示如何允许grep或其他搜索工具查找重叠匹配的一般问题 其他例子 最佳解决方案可在以下位置找到: 看起来您希望捕获从一场比赛结束到下一场比赛开始的空间: .*?(?=( [^\r\ ]+ )) 在grep中: #!/bin/bas

给定字符串:
lolool

当我尝试查找
lol
的数量时,Grep不会重叠匹配

echo“lolool”| grep-o'lol'| wc-l
上面的代码段返回
3
。事实上,我想要的答案是有6个lol。对于这种情况,我知道我可以简单地对
lo
进行grep,但是这个示例旨在表示如何允许grep或其他搜索工具查找重叠匹配的一般问题

其他例子 最佳解决方案可在以下位置找到:

看起来您希望捕获从一场比赛结束到下一场比赛开始的空间:

.*?(?=( [^\r\ ]+ ))
grep
中:

#!/bin/bash

string=" 1 -1 1 
 a bc d 
 alpha beta delta "

echo "$string" | grep -Po '.*?(?=( [^\r\n ]+ ))'

使用它不会显示空间,但我相信它们在那里。

很好,您在问题中显示了您的努力。请在您的问题中添加输入和预期输出的样本,然后让我们知道,以便更好地理解问题。我不明白为什么
[^]+
不够。你能提供当前输出和期望输出吗?这部分
[^]
匹配除空格以外的任何字符,这是有意的吗?看起来问题过于简单,实际问题完全不同。请解释你在现实生活中遇到的问题。至少,请提供给定示例输入的预期输出。添加预期输出后,“我不明白为什么
[^]
不够”x2。请注意,
echo$string
(无引号)将所有换行符替换为空格。@BenjaminW。我不是什么bash专家。我的答案可以保存吗?这个答案在结尾处删除了最后一个单词,包括
echo“$string”
如果你引用,
echo“$string”
,换行符会被保留,请参见。@Explorer老实说,我不太清楚我在bash中做了什么。这是我能得到的最接近的了。
#!/bin/bash

string=" 1 -1 1 
 a bc d 
 alpha beta delta "

echo "$string" | grep -Po '.*?(?=( [^\r\n ]+ ))'