在一系列文件中,我想查看哪一行同一个单词至少出现 4 次。这个词可以是任何词。
所以 输入:
a a a b b e e e o o o o p p p y y y w r r r u u i i o o r x x o o i i p p z z y y
Output:
o o o o p p p y y y w r r r u u i i o o r
What I have tried at the moment is to make sure that sentences are put separate, ready to be processed basically.
cat * |
tr '\n' ' '|
sed 's/[.!?;"]/ & /g' |
sed 's/[.!?]/&\n/g'|
grep -E -w '\b([[:alnum:]]*)\{4*\}\b'
但是我的 grep 没有得到任何结果,那么我如何才能让 Grep 只打印出包含至少出现 4 次的单词的所有句子?
最佳答案
通过 GNU grep
,您可以使用 PCRE 正则表达式,例如
grep -P '\b(\w+)\b(.*\b\1\b){3}'
请参阅regex demo .
在 Ubuntu 18.04.4 LTS 中测试:
详细信息
\b(\w+)\b
- 整个单词(在第 1 组中捕获)(\b
是单词边界,\w
code> 匹配字母、数字或下划线)(.*\b\1\b){3}
- 任意文本出现 3 次 ({3}
),后跟与组 1 中相同的值(因为\1
是对第 1 组值的内联反向引用)作为整个单词(再次使用\b
单词边界。)
关于ubuntu - 查找同一字符串多次出现的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65065239/