【发布时间】:2021-02-16 12:17:23
【问题描述】:
给定字符串:lolololololol
当我尝试查找lol 的数量时,Grep 不会重叠匹配。
echo "lolololololol" | grep -o 'lol' | wc -l
上面的 sn-p 返回3。事实上,我想要的答案是有6lol。对于这种情况,我知道我可以简单地用 grep 搜索 lo,但这个示例旨在代表一般问题,即如何允许 grep 或其他搜索工具查找重叠匹配项。
其他示例
echo "1 2 3 4 5" | grep -E '(^| )[0-9]( |$)'
echo "10101" | grep '101'
可以在以下位置找到最佳解决方案 https://unix.stackexchange.com/questions/276159/grep-that-works-with-overlapping-patterns
【问题讨论】:
-
很高兴你在你的问题中表现出了你的努力。您能否在您的问题中添加输入和预期输出示例,然后让我们知道以便更好地理解问题。
-
我不明白为什么
[^ ]+不够用。你能提供当前输出与期望输出吗? -
这部分
[^ ]匹配除空格以外的任何字符,这是有意的吗? -
看起来问题过于简单化了,而真正的问题却大不相同。请解释您遇到的现实问题。至少,请提供给定示例输入的预期输出。
-
添加预期输出后,“我不明白为什么
[^ ]不够”x 2。